Aktualisieren eines Elements in sub-sub-array in mongodb
Habe ich diese Daten in Mongo:
{
"_id" : ObjectId("505fd43fdbed3dd93f0ae088"),
"categoryName" : "Cat 1",
"services" : [
{
"serviceName" : "Svc 1",
"input" : [
{ "quantity" : 10, "note" : "quantity = 10" },
{ "quantity" : 20, "note" : "quantity = 20" }
]
},
{
"serviceName" : "Svc 2",
"input" : [
{ "quantity" : 30, "note" : "quantity = 30" },
{ "quantity" : 40, "note" : "quantity = 40" }
]
}
]
}
Nun möchte ich zum update eine Menge für die "Svc-1":
{ "quantity" : 10, "note" : "quantity = 10" }
Wie:
{"quantity": 100, "note": "changed to 100"}
Wie kann ich mit Mongo?`
Wie ich Sie kenne, Betriebs-operator unterstützt nur für das erste array, jemand riet zur Verwendung von index eines Elements von der sub-sub-array, aber das problem ist, dass, wie Sie wissen können, dass der index während der Laufzeit? (Ich bin mit native C# - Treiber für MongoDB)
Vielen Dank im Voraus für Ihre Hilfe!
Johnny
Du musst angemeldet sein, um einen Kommentar abzugeben.
Da hast du ein array in einem array, gibt es nicht eine einfache Möglichkeit zum verweisen auf den verschachtelten subarray, es sei denn, Sie wissen, die position im array, die Sie aktualisieren möchten.
So, zum Beispiel, könnten Sie aktualisieren den ersten input für 'Svc 1' mit der C# - äquivalent:
Wenn Sie nicht wissen, die position der verschachtelten
input
array, müssen Sie Holen Sie sich das passendeservices
, Durchlaufen dieinput
array im code der Anwendung, dann$set
dem aktualisierten array.Alternativ könnten Sie ändern Ihre verschachtelte array zu verwenden, eine eingebettete Dokument statt, z.B.:
Dem Sie könnte dann aktualisieren, indem Namen, z.B.
input1
:Da Sie nicht wissen, die position des Wertes wollte zu aktualisieren, legen Sie zuerst einen neuen Wert mit aktuellen Informationen und entfernen Sie dann den Wert wollte zu aktualisieren.
Entfernen und dann beim einfügen wird der Erfolg
Dies ist nützlich, wenn der index nicht bekannt ist und das Dokument haben sollten, sub-Dokumente, die der gleichen Taste wie "Eingang" in post Aktualisieren eines Elements in sub-sub-array in mongodb