【发布时间】:2022-01-23 01:01:56
【问题描述】:
不幸的是,我只能在 stackoverflow 上找到非常具体的问题,并且在文档中没有确切的详细信息,所以这里有一个更通用的示例,也可能对其他人有所帮助。
我只想给对象中带有“title:'title3”的数组(arr)添加一个值。
{
_id: <id>,
prop1: val1,
prop2: val2,
prop3: [
{
title: 'title1',
arr: ['val1', 'val2', 'val3'],
},
{
title: 'title2',
arr: ['val1', 'val2', 'val3'],
},
{
title: 'title3',
arr: ['val1', 'val2', 'val3'], //only update this array
}
]
}
我目前的做法是这样的:
SomeModel.findOneAndUpdate(
{ _id: id, "prop3.title": "title3" },
{$push: { "prop3.$[].arr": someDoc._id.toString() }},
(err, doc) => {
if (err) {
console.log('Error updating doc: ', err);
resolve(false);
} else {
resolve(doc);
}
}
);
但是,这里的问题是,不仅在标题为“title3”的对象的数组中添加了一个值,而且在任何地方都添加了一个值。
如何将一个值专门添加到标题值为“title3”的对象中的数组? 我也非常感谢提供解释这一点的文档链接。
【问题讨论】:
标签: node.js mongodb mongoose mongodb-query