Ich verwende Subdokumente in Mongodb.Positionsoperator für mehrere Ebenen von Filialdokumenten verwenden
Mit einer Ebene von Unterdokumenten, kann ich Dokumente aktualisieren mit
Parent.findOneAndUpdate({ _id: parentId, 'children._id': childId }, {
$set: {
'children.$.name': name
}
}, (err, doc) => {
...
});
aber ich habe Probleme für eine andere Ebene der Unterdokumente das gleiche zu tun, das heißt
Parent.findOneAndUpdate({ _id: parentId, 'children._id': childId, 'children.grandchildren._id': grandchildId }, {
$set: {
'children.$.grandchildren.$.name': name
}
}, (err, doc) => {
...
});
die Positions Ist Operator ($
) beschränkt auf nur 1 Ebene Filialdokumente?
Oh. Vielen Dank. Aber nehmen Sie nicht Ihre Workaround nur das allererste Objekt in der Enkelkinder-Array anstelle der, die mit meiner "EnkelkindId" übereinstimmt? – Jamgreen
Ja, es würde das allererste Objekt auswählen, wie Sie es erwähnt haben. Du kannst aber die Funktion ** foreach ** des Mongodb verwenden und den Namen jedes Enkels aktualisieren, der der 'grandchildId' entspricht. Der Link, den ich mit meiner Antwort versehen habe, hat auch eine Antwort, auf die du dich beziehen kannst. [Hier ist der Link für diese Antwort] (http://stackoverflow.com/a/18721690/4334340) –