0
我在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級子文檔?
哦。謝謝。但是,你的解決方法是不是隻將第一個對象放在孫子陣列中,而不是與我的'grandchildId'匹配的對象? – Jamgreen
是的,它會選擇你剛剛提到的第一個對象。但是,您可以使用mongodb的** foreach **函數並更新與「grandchildId」匹配的每個孫名稱。我提供的鏈接也提供了一個可供您參考的答案。 [這是該答案的鏈接](http://stackoverflow.com/a/18721690/4334340) –