明示的なsort()
を追加することをお勧めします 結果の予測可能な順序が必要な場合の基準。
後の順序が「挿入順序」であり、MongoDBのデフォルトで生成されたObjectIdを使用しているとすると、ObjectIdに基づいてクエリを実行できます。
// Find next product created
db.products.find({_id: {$gt: ObjectId("4fdbaf608b446b0477000142") }}).limit(1)
この例は次の理由でのみ機能することに注意してください:
- ObjectIdの最初の4バイトは、UNIXスタイルのタイムスタンプから計算されます(ObjectId仕様 )
-
_id
に関するクエリ 単独でデフォルトの_id
を使用します 一致するものを見つけるためのインデックス(IDでソート)
したがって、実際には、この暗黙の並べ替えは次のようになります。
db.products.find({_id: {$gt: ObjectId("4fdbaf608b446b0477000142" )}}).sort({_id:1}).limit(1);
「次の」商品を見つける方法を限定するためにクエリにさらに条件を追加した場合(たとえば、category
)、クエリは別のインデックスを使用する可能性があり、順序が期待どおりでない可能性があります。
インデックスの使用状況は、 Explain() で確認できます。 。