Javascript 仅更新MongoDB中的某些子文档
给予这样的文件Javascript 仅更新MongoDB中的某些子文档,javascript,mongodb,meteor,Javascript,Mongodb,Meteor,给予这样的文件 { _id: '123456', items: [{ itemId: 'abcd', qty: 1 }, { itemId: 'defg', qty: 3 }] } 我只想更新某些项目;例如,我只想将itemId='abcd'的数量增加5,这样生成的文档将成为 { _id: '123456', items: [{ itemId: 'abcd', qty: 6 }, { itemI
{
_id: '123456',
items: [{
itemId: 'abcd',
qty: 1
}, {
itemId: 'defg',
qty: 3
}]
}
我只想更新某些项目;例如,我只想将itemId='abcd'
的数量增加5
,这样生成的文档将成为
{
_id: '123456',
items: [{
itemId: 'abcd',
qty: 6
}, {
itemId: 'defg',
qty: 3
}]
}
我该怎么做?基本上有3个步骤:
1. Select the itemid from items array where value is abcd
2. use $inc property to increament
3. Use $ operator(positional update) to specify that you want to
从要更新的文档中增加数量键
PFB最终查询:
db.schools.update({
items.itemId: 'abcd'
},{
$inc : { items.$.qty : 5 }
});
mongo shell上的update命令应该可以工作:db.cols.update({“items.itemId”:“abcd”},{$set:{“items.$.qty”:5})。您需要使用$运算符来更新数组中的一个元素。可能是重复的,
$
运算符会更新每个子文档,但是你是说数据库足够聪明,可以只匹配匹配子文档的更新吗?是的,所以更新的第一个参数是查询,我们将使用它首先过滤掉文档,然后第二个参数将告诉我们在这些过滤的文档中更新什么..像$inc和$set这样的字段更新操作符不更新每个子文档,它们只修改指定的字段。是adi,它只修改特定字段。。不是整个文件。