Ini disebut tatanan alam :
natural order
Urutan di mana database merujuk ke dokumen pada disk. Ini adalah urutan pengurutan default. Lihat
$natural
danReturn in Natural Order
.
Ini menegaskan bahwa secara umum Anda mendapatkannya dalam urutan yang sama dengan yang Anda masukkan, tetapi itu tidak dijamin–seperti yang Anda perhatikan.
Kembali dalam Ketertiban Alami
$natural
parameter mengembalikan item sesuai dengan urutan alami mereka dalam database. Urutan ini adalah fitur implementasi internal, dan Anda tidak boleh bergantung pada struktur tertentu di dalamnya.Penggunaan Indeks
Kueri yang menyertakan pengurutan berdasarkan
$natural
pesan jangan jangan gunakan indeks untuk memenuhi predikat kueri dengan pengecualian berikut:Jika predikat kueri adalah kondisi kesetaraan pada_id
bidang{ _id: <value> }
, lalu query dengan mengurutkan berdasarkan$natural
pemesanan bisa menggunakan_id
indeks.MMAPv1
Biasanya, urutan alami mencerminkan urutan penyisipan dengan pengecualian berikut untuk mesin penyimpanan MMAPv1. Untuk mesin penyimpanan MMAPv1, urutan alami tidak mencerminkan urutan penyisipan jika dokumen dipindahkan karena pertumbuhan dokumen atau penghapusan operasi mengosongkan ruang yang kemudian diambil oleh dokumen yang baru dimasukkan.
Jelas, seperti dokumen yang disebutkan, Anda seharusnya tidak mengandalkan urutan default ini (Pengurutan ini adalah fitur implementasi internal, dan Anda tidak boleh mengandalkan struktur tertentu di dalamnya. ).
Jika Anda perlu mengurutkan, gunakan solusi pengurutan.
Pada dasarnya, dua panggilan berikut harus mengembalikan dokumen dalam urutan yang sama (karena urutan default adalah $natural
):
db.mycollection.find().sort({ "$natural": 1 })
db.mycollection.find()
Jika Anda ingin mengurutkan berdasarkan bidang lain (mis. name
) Anda dapat melakukannya:
db.mycollection.find().sort({ "name": 1 })