我在mongodb中使用子文档。
使用一个级别的子文档,我可以使用
更新文档Parent.findOneAndUpdate({ _id: parentId, 'children._id': childId }, {
$set: {
'children.$.name': name
}
}, (err, doc) => {
...
});
但是我对另一级子文档做同样的问题,即
Parent.findOneAndUpdate({ _id: parentId, 'children._id': childId, 'children.grandchildren._id': grandchildId }, {
$set: {
'children.$.grandchildren.$.name': name
}
}, (err, doc) => {
...
});
位置运算符($
)是否仅限于1级子文档?
答案 0 :(得分:0)
位置运算符($)仅支持一个级别以及第一个匹配元素。作为一种解决方法,你可以做的就是这个,
$set: {
'children.$.grandchildren.0.name': name
}
我认为这个问题更清楚地解释为here