单个更新查询可更新单个文档包含子数组文档?

问题描述

我在数据库中已有一个文档:

计划收集(在数据库中):

{ _id: ObjectId('XXX'),name: 'Plan A',remark: 'YYY',products: [ {name: 'Pdt1',qty: '10'},{name: 'Pdt2',qty: '20'} ]
}

我需要使用下面的产品完全更新到“计划A”文档(无需与数据库中的现有产品匹配):

{ _id: ObjectId('XXX'),remark: 'edited YYY',{name: 'Pdt3',qty: '30'},{name: 'Pdt4',qty: '40'}  ]

问题:

是否有一种简单的MongoDB方法来更新现有的“计划A”文档以更新其字段并替换 DB中的所有产品子数组?谢谢

解决方法

如果您要替换整个产品子文档,则可以使用MongoDb 3.6+中的所有$[]运算符替换

var filter = {
    name: 'Plan A'
};

var update = {
    $set: {
        'products.$[]': [ 
            {name: 'Pdt1',qty: '10'},{name: 'Pdt3',qty: '30'},{name: 'Pdt4',qty: '40'}  
        ]
    }
};

var options = {
    multi: true
};

db.collection.update(filter,update,options);

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...