Я пытаюсь обновить объекты в массиве в документе. Объекты не являются поддоменами и поэтому не имеют уникального идентификатора. Я пробовал смотреть на различные методы для этого, но он просто не имеет никакого эффекта (как в, ничего не происходит - никаких ошибок, но документ не обновляется.Обновление объектов внутри массива в MongoDB с помощью mongoose
Наверное, проще просто показать . код во-первых, вот пример документа в этой коллекции:
{
_id: 123,
//other fields go here
submissions: [
{
submission: 1,
downloaded: null, //This should be an ISODate when populated
assessor: null, //This should be an ObjectID when populated
feedbackUploaded: null, //This should also be an ISODate
path: '401Test1.doc',
assessorNotes: null //This should be a string when populated
},
{
submission: 2,
downloaded: null,
assessor: null,
feedbackUploaded: null,
path: '401Test2.doc',
assessorNotes: null
}
]
}
И теперь мой мангуст запроса (в пределах экспресс-маршрута):
const unit = req.body.unit; //e.g. 123
const submission = req.body.submission // e.g. 2
const date = Date.now();
Unit.update({ "_id": unit, "submissions.submission": submission }, {
$set: {
'submissions.assessorNotes': req.body.assessorComments,
'submissions.feedbackUploaded': date,
'submissions.assessor': req.body.assessor
}, function(err){
//callback
}
})
Я также попытался это с помощью $
обозначения в команда $set
, т.е. 'submissions.$.assessorNotes': req.body.assessorComments'
, но это тоже не работает.
Куда я иду не так?
Cheers!
Chris
он должен работать с позиционным оператором '$'. ты уверен, что у тебя есть матч? если вы просто «находите» с этими параметрами, вы найдете документ? – TomG
Пробовал запустить 'find', и он вернул правильный документ, так что похоже, что я получаю соответствие - он просто не обновляется. Попробовали с 'findOneAndUpdate', а также - та же проблема – Chris