问题描述
我在数据库中已有一个文档:
计划收集(在数据库中):
{ _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);