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

Subdokumen temukan/perbarui luwak

Jadi seperti yang Anda perhatikan, default di luwak adalah ketika Anda "menyematkan" data dalam array seperti ini, Anda mendapatkan _id nilai untuk setiap entri array sebagai bagian dari properti sub-dokumennya sendiri. Anda sebenarnya dapat menggunakan nilai ini untuk menentukan indeks item yang ingin Anda perbarui. Cara MongoDB melakukan ini adalah $ . posisional variabel operator, yang memegang posisi "cocok" dalam larik:

Folder.findOneAndUpdate(
    { "_id": folderId, "permissions._id": permission._id },
    { 
        "$set": {
            "permissions.$": permission
        }
    },
    function(err,doc) {

    }
);

.findOneAndUpdate() itu metode akan mengembalikan dokumen yang dimodifikasi atau Anda bisa menggunakan .update() sebagai metode jika Anda tidak memerlukan dokumen dikembalikan. Bagian utama adalah "mencocokkan" elemen array untuk memperbarui dan "mengidentifikasi" yang cocok dengan posisi $ seperti yang disebutkan sebelumnya.

Maka tentu saja Anda menggunakan $set operator sehingga hanya elemen yang Anda tentukan sebenarnya dikirim "melalui kabel" ke server. Anda dapat melangkah lebih jauh dengan "notasi titik" dan cukup tentukan elemen yang sebenarnya ingin Anda perbarui. Seperti dalam:

Folder.findOneAndUpdate(
    { "_id": folderId, "permissions._id": permission._id },
    { 
        "$set": {
            "permissions.$.role": permission.role
        }
    },
    function(err,doc) {

    }
);

Jadi, inilah fleksibilitas yang disediakan MongoDB, di mana Anda bisa sangat "tertarget" dalam cara Anda benar-benar memperbarui dokumen.

Namun apa yang dilakukan adalah "memotong" logika apa pun yang mungkin Anda buat ke dalam skema "luwak", seperti "validasi" atau "kait pra-simpan" lainnya. Itu karena cara "optimal" adalah "fitur" MongoDB dan bagaimana ia dirancang. Luwak sendiri mencoba menjadi pembungkus "kenyamanan" atas logika ini. Tetapi jika Anda siap untuk mengambil kendali sendiri, maka pembaruan dapat dilakukan dengan cara yang paling optimal.

Jadi jika memungkinkan untuk melakukannya, simpan data Anda "tersemat" dan jangan gunakan model yang direferensikan. Ini memungkinkan pembaruan atom dari item "induk" dan "anak" dalam pembaruan sederhana di mana Anda tidak perlu khawatir tentang konkurensi. Mungkin itulah salah satu alasan Anda harus memilih MongoDB sejak awal.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Faktor yang Perlu Dipertimbangkan Saat Memilih MongoDB untuk Aplikasi Big Data

  2. Bagaimana cara mengatasi masalah terkait mongoDB secara efisien?

  3. Ikhtisar MongoDB Atlas:Bagian Satu

  4. Menerapkan pagination di mongodb

  5. Cara memilih subdokumen dengan MongoDB