これは自然秩序と呼ばれます :
natural orderデータベースがディスク上のドキュメントを参照する順序。これはデフォルトのソート順です。
$naturalを参照してください およびReturn in Natural Order。
これは、一般的に、挿入したのと同じ順序でそれらを取得することを確認しますが、気付いたように、それは保証されません。
自然な順序で戻る
$naturalパラメータは、データベース内の自然な順序に従ってアイテムを返します。この順序付けは内部実装機能であり、その中の特定の構造に依存しないでください。インデックスの使用
$naturalによる並べ替えを含むクエリ 注文はしない 次の例外を除いて、インデックスを使用してクエリ述語を実行します。クエリ述語が_idの等価条件である場合 フィールド{ _id: <value> }、次に$naturalで並べ替えたクエリ 注文には_idを使用できます インデックス。MMAPv1
通常、自然な順序は、MMAPv1ストレージエンジンの次の例外を除いて、挿入順序を反映します。 MMAPv1ストレージエンジンの場合、ドキュメントの増加または削除操作のためにドキュメントが再配置された場合、自然な順序は挿入順序を反映しません。スペースが解放され、新しく挿入されたドキュメントによって占有されます。
明らかに、言及されたドキュメントのように、あなたはすべきではありません このデフォルトの順序に依存します(この順序は内部実装機能であり、その中の特定の構造に依存しないでください。 。
並べ替える必要がある場合は、並べ替えソリューションを使用してください。
基本的に、次の2つの呼び出しは、同じ順序でドキュメントを返す必要があります(デフォルトの順序は$naturalであるため) ):
db.mycollection.find().sort({ "$natural": 1 })
db.mycollection.find()
別のフィールド(例:name)で並べ替える場合 )あなたはそれを行うことができます:
db.mycollection.find().sort({ "name": 1 })