Ich versuche, ein Objekt in einem Array eines Dokuments mit Mgo zu aktualisieren. Die Objektstruktur ist wie folgt:Warum aktualisiert meine Abfrage das Objekt in einem Array nicht?
{
"_id": 2,
"status": 0,
"details": [{
"id": 2,
"category": "A",
"obj": {
"apple": 5,
"banana": 2,
"cherry": 10
},
"members": [{
"id": 3,
"category": "A",
"obj": {
"apple": 5,
"banana": 2,
"cherry": 10
}
},
{
"id": 4,
"category": "A",
"obj": {
"apple": 5,
"banana": 2,
"cherry": 10
}
}
]
}]
}
Query1: ich zum ersten Mal versuchen details > obj
zu aktualisieren, wo "guava": 15
ein weiteres Attribut hinzufügen versuchen, die folgende Abfrage mit
cond := bson.M{ "$and": []bson.M{ bson.M{"document.details":bson.M{ "$elemMatch": bson.M{ "category": "A"} } }, bson.M{"document.status":0} } }
query := bson.M{ "$set": bson.M{ "document.details.$.obj.guava":15 } }
_, err := models.DbUpdateAll(Collection, cond, query)
Diese Abfrage wird weder eine Erzeugung Fehler noch das Dokument zu aktualisieren. Kann jemand bitte sagen, wie kann ich es erreichen
Hinweis: Ich habe über Google gesucht, konnte aber nicht relevant finden, was ich brauche.
Query2: Ich brauche auch die details > members > obj
die gleiche Art und Weise zu aktualisieren, die ich für details > obj
zu tun versuchen. Bitte sagen Sie mir auch, wie ich das gleiche für details > members > obj
erreichen kann.
Ich habe Stunden damit verbracht, herauszufinden, aber nichts hat geklappt. Ich werde dankbar sein, wenn mich jemand führen könnte.
Siehe auch: https://docs.mongodb.com/manual/reference/operator/update/positional/#up._S_ –
Danke für die Antwort, aber ich mache ich das selbe .. In der Abfrage habe ich versucht, indem ich "Dokument" entfernt habe (was ich hier verwende, um als Objektname darzustellen, dh wie der Sammlungsname), aber es aktualisiert das Objekt nicht. – MKB
Vielleicht stimmt etwas nicht, bitte den Fehlerwert beim Aufruf von col.update() ausgeben –