Использование позиционного оператора для нескольких уровней поддокументов
Я использую поддокументы в 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
}
Я думаю, что этот вопрос более четко объясняется здесь