Ich habe ein Problem mit MongoDB $ set & $ -Operatoren. Ich versuche, ein vorhandenes ArrayMongoDB Bulk.find.update() nicht ändern Array-Objekte, nur neue hinzufügen
Meine Update-Methode sieht wie folgt aus etwa zu ändern (Ich kann nicht die genaue Kopie erhalten, wie es in Clojure/Monger geschrieben):
bulk.find({
_id: 2,
channelStatuses.channel: {$eq: "BAR"}
}).update({
$set: {"channelStatuses.$.status": "error" }
});
Meine Daten sieht etwa so aus:
{
"_id" : "1",
"channelStatuses" : [
{
"channel" : "FOO",
"status" : "done"
}
]
},
{
"_id" : "2",
"channelStatuses" : [
{
"channel" : "BAR",
"status" : "done"
}
]
},
{
"_id" : "3",
"channelStatuses" : [
{
"channel" : "BAZ",
"status" : "error"
}
]
},
{
"_id" : "3",
"channelStatuses" : []
}
Also, was ich will es tun, ist, den Status des channelStatuses-Objekt des Dokuments mit _id = 2.
Statt ändern es in der chann ein neues Objekt erstellt elStatuses Array, und das Dokument sieht so aus:
{
"_id" : "2",
"channelStatuses" : [
{
"channel" : "BAR",
"status" : "done"
},
{
"channel" : "BAR",
"status" : ""
}
]
},