Ich versuche, Objekte innerhalb eines Arrays in einem Dokument zu aktualisieren. Die Objekte sind keine Filialdokumente und haben daher keine eindeutige ID. Ich habe versucht, verschiedene Methoden zu suchen, um dies zu tun, aber es scheint nur keine Wirkung (wie in nichts passiert - keine Fehler, aber das Dokument wird nicht aktualisiert.Aktualisieren von Objekten in Array in MongoDB mit Mungo
Wahrscheinlich einfacher, nur um die zu zeigen . Code Zuerst, hier ist ein Beispiel für ein Dokument in dieser Sammlung:
{
_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
}
]
}
Und nun Abfrage meiner Mungo (innerhalb einer Schnellstraße):
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
}
})
ich auch dies mit $
Notation versucht habe in der $set
Befehl dh 'submissions.$.assessorNotes': req.body.assessorComments'
, aber das scheint auch nicht zu funktionieren.
Wohin gehe ich falsch ?!
Prost!
Chris
es sollte $ 'mit dem Positions Operator' arbeiten. Bist du sicher, dass du eine Übereinstimmung hast? Wenn Sie nur mit diesen Parametern "finden", finden Sie das Dokument? – TomG
Ich habe versucht, einen 'find' auszuführen, und es hat das korrekte Dokument zurückgegeben, so dass es aussieht, als ob ich eine Übereinstimmung erhalte - es aktualisiert sich gerade nicht. Habe auch mit 'findOneAndUpdate' versucht - gleiches Problem – Chris