Использование позиционного оператора для нескольких уровней поддокументов

Я использую поддокументы в 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 ответ

Позиционный оператор ($) поддерживает только один уровень, а также первый соответствующий элемент. В качестве обходного пути, что вы можете сделать, это,

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

Я думаю, что этот вопрос более четко объясняется здесь

Другие вопросы по тегам