MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Актуализирайте елемента на вложен масив в mongodb

Необходими са няколко поправки по заявката, иначе е почти готово. Актуализацията не работи, защото $elemMatch за attributeSet (масив от документи) трябва да се случи на id свойство на тези документи за филтриране, а не на attributeSet.id , нямаше да разбера какво е. И вложеното elemMatch не се изисква, просто използвайте нотация с точка .

За отстраняване на грешки можете да го изпробвате със заявка за намиране.

Заявка (Shell):

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 с помощта на Multer в Mongoose

  2. mongoDB:как да проверя съществуването на dict ключ във вложен dict?

  3. Изграждане на персонализиран Newsfeed, подобен на Facebook:SQL, MongoDB?

  4. Stripe:Трябва да посочи източник или клиент

  5. mongoDB upsert върху масив