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

MongoDB memperbarui beberapa subdokumen dengan atau kueri

Anda mendapatkan kesalahan ini

karena kueri kedua Anda cocok dengan beberapa sub-dokumen . Saat ini tidak mungkin menggunakan operator posisi untuk memperbarui semua item dalam larik menggunakan operator posisi.

jadi untuk mengatasi masalah Anda, Anda dapat mengikuti proses ini

  1. Temukan dokumen menggunakan _id dan temukan sub dokumen menggunakan $elemMatch lalu

  2. perbarui setiap sub dokumen dan simpan dokumen lagi

dapat mencoba seperti ini:

db.deduplications.find(  
{ $or: [ {
         "_id": ObjectId("583fc558668bde730a460e11") , 
        "DeviceVersionPairs":{
            $elemMatch:{ "DeviceId": ObjectId("5822d0606bfdcd6ec407d9b9") , 
            "CloudFolderId": ObjectId("5823110e6bfdd46ec4357582") ,
            "DeviceVersionPairs.CloudFileId": ObjectId("582311168cd396223499942a") ,
            "DeviceVersionPairs.VersionId": ObjectId("582311168cd396223499942b") }}
    } ,   
    { 
        "_id": ObjectId("583fc558668bde730a460e11") , 
        "DeviceVersionPairs":{
            $elemMatch:{ "DeviceId": ObjectId("56dfe1356caaea14a819f1e4") , 
            "CloudFolderId": ObjectId("583fb4bc6e7f341874f13bfc") , 
            "CloudFileId": ObjectId("583fb539e015b8a53fb71872") , 
            "VersionId": ObjectId("583fb4ca6e7f331874213584") }}
    } ] 
}).forEach(function (doc) {
    doc.DeviceVersionPairs.forEach(function (device) {
      device.status = 'passive';
    });
    db.deduplications.save(doc);
 });


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Lembar Cheat Kinerja untuk MongoDB

  2. Halaman login sederhana di nodejs menggunakan ekspres dan paspor dengan mongodb

  3. luwak menghapus objek atau array kosong

  4. Filter array di mongodb

  5. Kesalahan saat menginstal mongodb di ubuntu 16.04