ObjectIds または日付フィールドを使用してソートすると、探している結果が得られない場合があります。挿入されたドキュメントの ObjectId と日付はクライアント側で生成されるため、複数のマシンからの接続で実行している場合、マシン間のタイミングが完璧でない限り、順序の不一致が発生します。
あなたがやろうとしていることの詳細を教えていただけますか? 特定のドキュメントの後にドキュメントのリストを挿入する必要がある理由に応じて、MongoDB から必要な動作を取得する方法がいくつかあります。
たとえば、ドキュメントの順序付けられたリストを一種のキューとして使用しようとしている場合は、代わりにfindAndModifyコマンドを使用して未読ドキュメントをフェッチし、「既読」フィールドをアトミックに更新して、2 回読まないようにすることができます。 . findAndModify を呼び出すたびに、読み取りフィールドが true に設定されていない最新のドキュメントがコレクション内で検索され、そのフィールドがアトミックに true に設定され、処理のためにドキュメントがクライアントに返されます。
一方、ユースケースで挿入された順序でドキュメントのリストが本当に必要な場合は、挿入されたドキュメントの自然な順序を利用できます。MongoDB では、ドキュメント サイズの変更や削除によって移動が必要になる場合を除き、ドキュメントは挿入順にディスクに書き込まれます。自然な順序を維持することが保証されているキャップ付きコレクションを使用することで、これを利用してドキュメントのリストを簡単に取得できます。キャップ付きコレクションの使用にはいくつかの主要な制限があることに注意してください。これについては、 ドキュメントで詳しく説明されています。