MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Намиране на следващия документ в MongoDb

Най-добре е да добавите изрично sort() критерии, ако искате предвидим ред на резултатите.

Ако приемем, че поръчката, която търсите, е „поръчка за вмъкване“ и използвате генерираните по подразбиране ObjectId от MongoDB, тогава можете да правите заявки въз основа на ObjectId:

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

Имайте предвид, че този пример работи само защото:

  • първите четири байта на ObjectId се изчисляват от клеймо за време в стил unix (вижте:Спецификация на ObjectId )
  • заявка за _id сам ще използва _id по подразбиране индекс (сортирани по id), за да намерите съвпадение

Така че наистина това имплицитно сортиране е същото като:

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

Ако сте добавили още критерии към заявката, за да определите как да намерите „следващия“ продукт (например category ), заявката може да използва различен индекс и редът може да не е такъв, какъвто очаквате.

Можете да проверите използването на индекса с explain() .



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Може ли MongoDB да използва индекс, когато проверява за съществуване на поле с оператор $exists?

  2. Как Mongolab REST API удостоверява

  3. Препратка към схемата на Mongoose и недефиниран тип „ObjectID“

  4. MongoDB BasicDBObject срещу документ в java

  5. Потискане на изхода от услугата Codeship