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() .