【发布时间】:2022-02-08 23:50:12
【问题描述】:
我有一个如下所示的 mongo 集合:
{
name: string
_id: (auto set)
items: array[
name: string
url: string
items: array[
{
name: string,
url: string,
items: []
}
]
]
}
我正在使用findByIdAndUpdate(带有猫鼬)将一个项目添加到项目数组中:
Menu.findByIdAndUpdate(
req.body.parentid,
{
$push: {
items: {
name: req.body.item.name,
url: req.body.item.url,
items: []
}
}
},
{
safe: true,
upsert: true,
new: true
},
function(err, model) {
if (err !== null) {
console.log(err);
}
}
);
这很好用,但它不会为插入到items 数组中的每个对象添加_id。我真的需要每个人都有一个 id。
我猜它来自使用的方法findByIdAndUpdate,因为它看起来更像是更新而不是插入。如果我的想法是正确的。
使用 mongodb 3.2.10 和 mongoose 4.7.6。
任何帮助将不胜感激。 谢谢。
编辑:_id: (auto set) 不是真实的,它是通过 mongo 自动添加的。但仅限于顶级对象。
【问题讨论】:
-
如果将
setDefaultsOnInsert选项设置为true会发生什么?