对多级子文档使用位置运算符

时间:2016-09-04 14:28:55

标签: javascript node.js mongodb mongoose positional-operator

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

1 个答案:

答案 0 :(得分:0)

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

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

我认为这个问题更清楚地解释为here