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

Perbarui elemen array bersarang di mongodb

Beberapa perbaikan diperlukan pada kueri, jika tidak, hampir sampai. Pembaruan tidak berfungsi karena $elemMatch untuk attributeSet (array of docs) akan terjadi di id properti dari dokumen tersebut untuk difilter dan bukan di attributeSet.id , itu tidak akan tahu apa itu. Dan elemMatch bersarang tidak diperlukan, cukup gunakan notasi titik .

Untuk men-debug, Anda dapat mencobanya dengan kueri pencarian.

Kueri (Cangkang):

db.collection.findOneAndUpdate(
  {
    _id: settingsToBeUpdated._id,
    attributeSet: {
      $elemMatch: {
        id: attributeSetId,
        "attributes.id": id
      }
    }
  },
  {
    $set: {
      "attributeSet.$[as].attributes.$[a].attributeName":
        attributeDto.attributeName,
      "attributeSet.$[as].attributes.$[a].defaultValue":
        attributeDto.defaultValue,
      "attributeSet.$[as].attributes.$[a].isRequired": attributeDto.isRequired
    }
  },
  {
    arrayFilters: [{ "as.id": attributeSetId }, { "a.id": id }],
    returnNewDocument: true
  }
);



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB $bsonSize

  2. Periksa keberadaan beberapa bidang dalam dokumen MongoDB

  3. Kelas 'MongoDB\Client' tidak ditemukan, ekstensi mongodb terpasang

  4. Perilaku kebutuhan di node.js

  5. NoSQL - MongoDB vs CouchDB