Ketika kita menjalankan query Mongo find () tanpa urutan apapun yang ditentukan, apa yang digunakan database secara internal untuk mengurutkan hasil?
Menurut dokumentasi di situs mongo :
Saat menjalankan find () tanpa parameter, database mengembalikan objek dalam urutan alami ke depan.
Untuk tabel standar, urutan natural tidak terlalu berguna karena, meskipun urutannya sering mendekati urutan penyisipan, itu tidak dijamin. Namun, untuk Koleksi Terbatas, urutan alami dijamin menjadi urutan penyisipan. Ini bisa sangat berguna.
Namun untuk koleksi standar (koleksi non capped), bidang apa yang digunakan untuk mengurutkan hasil? Apakah ini bidang _id atau yang lainnya?
Edit:
Pada dasarnya, saya kira apa yang saya coba dapatkan adalah jika saya menjalankan kueri penelusuran berikut:
db.collection.find({"x":y}).skip(10000).limit(1000);
Pada dua titik waktu yang berbeda: t1 dan t2 , apakah saya akan mendapatkan set hasil yang berbeda:
- Jika tidak ada penulisan tambahan antara t1 & t2?
- Kapan ada penulisan baru antara t1 & t2?
- Ada indeks baru yang telah ditambahkan antara t1 & t2?
Saya telah menjalankan beberapa tes pada database temp dan hasil yang saya dapatkan sama ( Ya ) untuk semua 3 kasus - tetapi saya ingin memastikan dan saya yakin bahwa kasus pengujian saya tidak terlalu menyeluruh.
{createdAt: -1}
) diperlukan untuk menerapkan pola UI Optimis (memperbarui daftar data di cache tanpa menunggu respons server setelah membuat / memperbarui / menghapus). Jika tidak, Anda tidak dapat mencocokkan urutan optimis sisi klien dan urutan respons server.Itu dikembalikan dalam urutan yang disimpan (urutan dalam file), tetapi tidak dijamin bahwa mereka ada dalam urutan yang disisipkan. Mereka tidak diurutkan menurut bidang _id. Kadang-kadang dapat terlihat seperti itu diurutkan berdasarkan urutan penyisipan tetapi dapat berubah dalam permintaan lain. Itu tidak bisa diandalkan.
sumber