sql >> Database >  >> NoSQL >> MongoDB

Het volgende document vinden in MongoDb

Het is het beste om expliciete sort() . toe te voegen criteria als u een voorspelbare volgorde van resultaten wilt.

Ervan uitgaande dat de volgorde die u zoekt "invoegvolgorde" is en u MongoDB's standaard gegenereerde ObjectIds gebruikt, dan kunt u een query uitvoeren op basis van de ObjectId:

// Find next product created
db.products.find({_id: {$gt: ObjectId("4fdbaf608b446b0477000142") }}).limit(1)

Merk op dat dit voorbeeld alleen werkt omdat:

  • de eerste vier bytes van de ObjectId worden berekend op basis van een tijdstempel in Unix-stijl (zie:ObjectId-specificatie )
  • een zoekopdracht op _id alleen gebruikt de standaard _id index (gesorteerd op id) om een ​​match te vinden

Dus eigenlijk is deze impliciete sortering hetzelfde als:

db.products.find({_id: {$gt: ObjectId("4fdbaf608b446b0477000142" )}}).sort({_id:1}).limit(1);

Als u meer criteria aan de zoekopdracht heeft toegevoegd om te kwalificeren hoe u het "volgende" product kunt vinden (bijvoorbeeld een category ), kan de zoekopdracht een andere index gebruiken en is de volgorde mogelijk niet zoals u verwacht.

U kunt het indexgebruik controleren met explain() .



  1. Moet ik de verbinding expliciet verbreken?

  2. Spring Data Mongo - unieke combinatievelden toepassen in ingesloten document

  3. Bekijk de voortgang van een langlopende mongodb-aggregatietaak

  4. Wat betekent *((char*)-1) ='x'-code?