MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Pesanan dokumen pengembalian Mongodb find

Dokumen disimpan dalam urutan alami

Dokumen disimpan dalam urutan menurun berdasarkan tanggal. Jadi koleksi tersebut memiliki 20140731 sebagai dokumen pertama.

Kecuali Anda menggunakan koleksi yang dibatasi, tidak ada jaminan untuk pemesanan dokumen pada disk (juga disebut sebagai tatanan alami).

Penghapusan dan pemindahan dokumen (ketika dokumen melebihi ruang rekaman yang dialokasikan) membuat ruang pada daftar gratis yang akan digunakan kembali.

Berikut adalah contoh cepat yang harus menunjukkan ini di mongo cangkang:

// Start with an empty database & collection
use demodb; db.dropDatabase(); db.order.drop()

// Add some test data
for (i=0; i<1000; i++) {
    db.order.insert({'i': i})
}

// Looks like insertion order! (0..9)
db.order.find({}).limit(10);

// Pause 5s for effect :)
sleep(5000);

// Remove half the entries
db.order.remove({ i: { $lt: 500 }})

// Re-add the missing entries
for (i=0; i<500; i++) {
    db.order.insert({'i': i})
}

// Not the entries you expected .. space from deleted records was reused
db.order.find({}).limit(10)

// Clean up demodb
db.dropDatabase()

Urutan hasil

Saat saya menggunakan perintah find dengan filter {$gte :20140720, $lte :20140731}, mongodb mengembalikan kueri dalam urutan menaik dari bidang "tanggal".

Jika indeks digunakan untuk kueri, dokumen dikembalikan sesuai urutan ditemukan dalam indeks. Anda harus memanfaatkan ini saat membuat indeks untuk kueri umum (lihat:Menggunakan Indeks untuk Mengurutkan Hasil Kueri).

FYI, indeks sederhana (mis. pada {date:1} ) dapat digunakan untuk mengembalikan hasil yang diurutkan dalam urutan menaik atau menurun.

Urutkan berdasarkan ObjectID

Jika Anda menggunakan ObjectIDs default MongoDB untuk _id , Anda dapat mengurutkan berdasarkan { _id: 1 } untuk memperkirakan urutan penyisipan sejak 4 byte pertama ObjectID memasukkan stempel waktu. Jika Anda ingin menggunakan ini untuk menyortir kueri berdasarkan date dan perkiraan urutan penyisipan Anda akan memastikan indeks pada {date:1, _id:1} .

Perhatikan bahwa ObjectID s biasanya dihasilkan oleh driver klien, jadi jika Anda memiliki penyimpangan jam di server aplikasi Anda (atau _id dibuat beberapa saat sebelum dokumen dimasukkan) ObjectID s mungkin tidak sepenuhnya mencerminkan "urutan penyisipan" seperti yang terlihat oleh server. Jika akurasi urutan penyisipan sangat penting, biasanya dimungkinkan untuk menghasilkan _id di sisi server (pendekatan bervariasi tergantung pada driver).




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bagaimana cara menghentikan penyisipan dokumen Duplikat dalam koleksi mongodb

  2. mongoError:Topologi dihancurkan

  3. Menggunakan JSON dengan MongoDB?

  4. XFS vs EXT4 – Membandingkan Kinerja MongoDB di AWS EC2

  5. Objek Dokumen MongoEngine yang dibuat menggunakan from_json tidak menyimpan