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

Mongodb pilih bidang untuk mengembalikan dokumen yang disematkan dalam array

Ya, tapi tidak seperti yang Anda inginkan. Jika Anda melakukan hal berikut, Anda hanya akan mendapatkan kembali elemen pertama dari array:

coll.find({_id:'2'}, { 'objects.0': 1})

Namun, yang sebenarnya Anda inginkan adalah sesuatu yang terlihat seperti berikut:

coll.find({_id:'2', 'objects._id': '3'}, { 'objects.$' : 1})

Tentu saja, itu tidak benar-benar berfungsi di MongoDB.

Melihat pertanyaan Anda yang lain , ini adalah salah satu alasan untuk menggunakan "objek tersemat" alih-alih "array objek". Dengan "objek tersemat" Anda dapat melakukan hal berikut:

coll.find({_id:'2'}, {'objects.3': 1}) // where 3 is the id of the third object

Ini memungkinkan Anda memilih "objek tersemat" yang Anda butuhkan saja.

Masalahnya dengan MongoDB adalah bahwa dokumen induknya selalu diambil. Kueri mengembalikan dokumen tingkat atas. Ini dimasukkan ke dalam seluruh arsitektur. Bahkan jika Anda hanya meminta sepotong dokumen, server masih harus memuat seluruh dokumen ke dalam memori sebelum melayani Anda bagian yang diminta.

Satu-satunya cara untuk mengatasi hal ini adalah dengan Kerangka Kerja Agregasi yang baru , tapi itu belum ada di cabang stabil.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Hasil Perulangan dengan Panggilan API Eksternal dan findOneAndUpdate

  2. MongoDB $ada

  3. Bagaimana cara menggunakan penguncian optimis dengan Spring Data MongoDB?

  4. Kasus tepi Pembaruan Integritas MongoDB

  5. Tanggal Luwak. Waktu sekarang tidak akurat