Aktualisieren Sie alle Eigenschaften des Objektes in MongoDb
Verwende ich die MongoDB .Net-Treiber in meinem Projekt. Ich möchte aktualisieren alle Eigenschaften des Objekts gespeichert ist in MongoDB. In der Dokumentation, update ist wie folgt dargestellt:
var filter = Builders<BsonDocument>.Filter.Eq("i", 10);
var update = Builders<BsonDocument>.Update.Set("i", 110);
await collection.UpdateOneAsync(filter, update);
Aber ich will nicht zu nennen, die Set
- Methode für alle Eigenschaften, da gibt es viele Eigenschaften und viele mehr in der Zukunft.
Wie kann ich update das ganze Objekt unter Verwendung der MongoDB .Net-Treiber?
- Yon nur
$set
und im Zusammenhang mit Operatoren (die alle diese Treiber Bauherren tun) auf die Felder, die Sie wirklich wollen, zu aktualisieren. Also, wenn Sie brauchen nur zu ändern, dann werden Sie Liste ein. Ist es das, was Ihr problem ist oder ist es, dass Sie ändern möchten 20 von 50 Immobilien in Ihrem update? - Anzahl der aktualisierten Eigenschaften sind unbekannt, so bin ich ok mit der Aktualisierung alle auf einmal, auch Wert ist immer noch die gleiche.
- Das ist im Grunde ein "Dokument aktualisieren" ohne Operatoren wie
$set
. Aber es ist eine praktische-Helfer-Methode, die das für Sie übernimmt, anstatt nur dem serialisieren des gesamten Dokuments.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie dies mit der
ReplaceOneAsync
stattUpdateOneAsync
.Müssen Sie einen filter zu entsprechen, wird das vorhandene Dokument (ein filter mit dem Dokument-id ist das einfachste) und das neue Objekt.
_id
s. Wenn ich die id aus der DB, das ist eine zusätzliche Anforderung an die DB. Ich habe ~800 Objekte pro batch. Dieser scheint einfach nicht zu, dass effiziente.dieser code verwendet reflektion, um alle Eigenschaften des gegebenen Objekts
der update-Anweisung, keine Notwendigkeit, manuell fügen Sie alle Eigenschaften, wie u sehen, die Id ist explizit ausgeschlossen von der update-Anweisung zu vermeiden, Ausnahme.