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

Bisakah MongoDB dan drivernya mempertahankan urutan elemen dokumen?

Mulai Versi 2.6, MongoDB mempertahankan urutan kolom jika memungkinkan. Namun, _id bidang selalu didahulukan, mengganti nama bidang dapat menyebabkan pemesanan ulang. Namun, saya biasanya mencoba untuk tidak mengandalkan detail seperti ini. Seperti yang disebutkan dalam pertanyaan awal, ada juga lapisan tambahan untuk dipertimbangkan yang masing-masing harus memberikan semacam jaminan untuk stabilitas pesanan...

Jawaban Asli:

Tidak, MongoDB tidak menjamin urutan kolom :

Secara khusus, pembaruan di tempat yang mengubah ukuran dokumen biasanya akan mengubah urutan bidang. Misalnya, jika Anda $set bidang yang nilai lama adalah jenis nomor dan nilai baru adalah NumberLong , kolom biasanya diurutkan ulang.

Namun, array mempertahankan urutan dengan benar:

[ {'key1' : 'value1'}, {'key2' : 'value2'}, ... ]

Saya tidak mengerti mengapa ini "jelek" dan "kembung" sama sekali. Menyimpan daftar objek kompleks tidak bisa lebih mudah. Namun, menyalahgunakan objek sebagai daftar jelas buruk:Objek memiliki semantik array asosiatif (yaitu hanya boleh ada satu bidang dari nama tertentu), sedangkan daftar/array tidak:

// not ok:
db.foo2.insert({"foo" : "bar", "foo" : "lala" });
db.foo2.find();
{ "_id" : ObjectId("4ef09cd9b37bc3cdb0e7fb26"), "foo" : "lala" }

// a list can do that
db.foo2.insert({ 'array' : [ {'foo' : 'bar'}, { 'foo' : 'lala' } ]});
db.foo2.find();
{ "_id" : ObjectId("4ef09e01b37bc3cdb0e7fb27"), "array" : 
      [ { "foo" : "bar" }, { "foo" : "lala" } ] }

Ingatlah bahwa MongoDB adalah database objek, bukan penyimpanan kunci/nilai.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mengapa Mongoose menambahkan array kosong?

  2. Padding dalam SQL

  3. server mengembalikan kesalahan pada langkah otentikasi SASL:Otentikasi gagal

  4. buat API untuk streaming audio/video dari GridFS mongodb

  5. dapatkah saya meneruskan kueri mongodb sebagai string di php