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 级子文档?

4

1 回答 1

0

位置运算符 ($) 仅支持一个级别,也支持第一个匹配元素。作为一种解决方法,您可以这样做,

$set: { 'children.$.grandchildren.0.name': name }

我认为这个问题在这里解释得更清楚

于 2016-09-04T15:03:46.133 回答