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