У меня похожая проблема, изложенная в этом вопросе , но я натыкаюсь на другой аспект. У меня есть массив объектов / вложенных документов, вложенных в документ в моей базе данных mon go, схема, подобная этой ...
const projectSchema = new mongoose.Schema({
name: {
type: String
},
...
stakeholders: [{
stakeholderTitle: {
type: String,
max: 150,
required: [true, 'A stakeholder must have a title.']
},
...
}],
, что мне нужно сделать, это обновить конкретный встроенный объект на основе запрос, но мне все еще нужно потом вернуть родительский документ. Основываясь на ответе на этот вопрос , я смог получить родительский документ, используя идентификатор для вложенного документа, но когда я попытался обновить вложенный документ, я не смог понять это. Это мой запрос
const filter = { 'stakeholders._id': req.body.stakeholderId }
const update = { stakeholderTitle: req.body.stakeholderTitle } // suspect the problem is here
let project = await Project.findOneAndUpdate(filter, update, {
new: true,
runValidators: true
})
Это выбирает родительский документ, как предполагалось, и я предполагаю, что мой аргумент 'update' - это то, где проблема, но я не совсем уверен, как обновить, когда мой запрос уже «находит» на основе идентификатора, который я хочу, но не «обновляет».