sql >> Databáze >  >> NoSQL >> MongoDB

Nalezení dalšího dokumentu v MongoDb

Nejlepší je přidat explicitní sort() kritéria, pokud chcete předvídatelné pořadí výsledků.

Za předpokladu, že objednávka, o kterou usilujete, je „objednávka vložení“ a používáte výchozí vygenerovaná ObjectId MongoDB, můžete se dotazovat na základě ObjectId:

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

Všimněte si, že tento příklad funguje pouze proto, že:

  • první čtyři bajty ObjectId jsou vypočítány z časového razítka ve stylu unixu (viz:Specifikace ID objektu )
  • dotaz na _id sám použije výchozí _id index (seřazeno podle id), abyste našli shodu

Ve skutečnosti je toto implicitní řazení stejné jako:

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

Pokud jste do dotazu přidali další kritéria, abyste kvalifikovali, jak najít „další“ produkt (například category ), dotaz může používat jiný index a pořadí nemusí být takové, jaké očekáváte.

Využití indexu můžete zkontrolovat pomocí explain() .



  1. Proč se mi zobrazuje chyba 500 Je nám líto, ale při odesílání mé aplikace do Heroku se něco pokazilo?

  2. Mongoose dotaz podle data

  3. Jak vypočítat průměr za den pole pomocí MongoDB?

  4. Protokolování pomocí winston-mongodb a express-winston