Ich versuche, ein einzelnes Unterelement zu aktualisieren, das in einem Array in einem Mongodb-Dokument enthalten ist. Ich möchte das Feld anhand seines Array-Index referenzieren (Elemente innerhalb des Arrays haben keine Felder, von denen ich garantieren kann, dass sie eindeutige Bezeichner sind). Das scheint einfach zu sein, aber ich kann die Syntax nicht herausfinden.
Folgendes möchte ich in Pseudo-Json tun.
Vor:
{
_id : ...,
other_stuff ... ,
my_array : [
{ ... old content A ... },
{ ... old content B ... },
{ ... old content C ... }
]
}
Nach:
{
_id : ...,
other_stuff ... ,
my_array : [
{ ... old content A ... },
{ ... NEW content B ... },
{ ... old content C ... }
]
}
Die Abfrage sollte ungefähr so aussehen:
//pseudocode
db.my_collection.update(
{_id: ObjectId(document_id), my_array.1 : 1 },
{my_array.$.content: NEW content B }
)
Das funktioniert aber nicht. Ich habe viel zu lange damit verbracht, die Mongodb-Dokumente zu durchsuchen und verschiedene Variationen dieser Syntax auszuprobieren (z. B. Verwenden $slice
usw.). Ich kann keine klare Erklärung dafür finden, wie diese Art von Update in MongoDB durchgeführt werden kann.