mongodb でサブドキュメントを使用しています。
1 レベルのサブドキュメントを使用して、次のようにドキュメントを更新できます。
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 レベルのみに制限されていますか?