MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Mongo DB:Ottieni tutti i documenti inseriti dopo l'ultimo noto

Dal momento che il ObjectId per impostazione predefinita contiene un inc e un timestamp ( http://www.mongodb.org/display/DOCS/ Object+IDs#ObjectIDs-BSONObjectIDSpecification ) puoi effettivamente utilizzare ObjectId per capire il tempo di inserimento (approssimativamente) tramite:

db.col.find({_id: {$gt: {ObjectId("50911c4709913b2c643f1216")}}});

Tuttavia il ObjectId non può essere sempre estremamente affidabile soprattutto se, nella tua app, crei l'ObjectId un po' prima dell'inserimento e in realtà viene mostrato un record che sai che è stato creato in seguito (a causa del suo _id ) come prima.

Per inserimenti in determinati scenari in cui non puoi fidarti di ObjectId per il timer di inserimento puoi aggiungere un ts campo di un tipo di data BSON (ISODate ) e selezionalo usando due query, una per ottenere l'ora dei documenti originali e un'altra per ottenere tutti i documenti dopo.

Personalmente preferisco semplicemente utilizzare il secondo metodo di utilizzo di un tipo di data BSON poiché è più affidabile e flessibile.