MongoDB: update nur auf bestimmte Felder
Ich versuche, eine Zeile zu aktualisieren, die in einer (typisierten) MongoDB-collection mit der C# - Treiber. Beim Umgang mit Daten, dass insbesondere der Sammlung von Art MongoCollection<User>
tendiere ich zu vermeiden, das abrufen sensibler Daten aus der Sammlung (salt, Passwort-hash, etc.)
Nun bin ich versucht, zu aktualisieren ein User
Instanz. Jedoch habe ich nie wirklich abgerufen werden sensible Daten in den ersten Platz, also denke ich, würden diese Daten werden default(byte[])
im gefundenen Modell-Instanz (soweit ich das sagen kann) bevor ich die änderungen übernehmen und übermitteln Sie die neuen Daten in die Sammlung.
Vielleicht bin ich die überwachung etwas trivial in der MongoDB C# driver, wie kann ich verwenden MongoCollection<T>.Save(T item)
ohne Aktualisierung bestimmter Eigenschaften wie User.PasswordHash
oder User.PasswordSalt
? Sollte ich die Daten des vollständigen Datensatzes aktualisieren Sie zunächst "safe" - Eigenschaften gibt, und schreiben Sie es zurück? Oder gibt es eine schicke option, um auszuschließen, bestimmte Felder von der Aktualisierung?
Vielen Dank im Voraus
Du musst angemeldet sein, um einen Kommentar abzugeben.
Speichern(Wert) ist für den Fall, dass Sie wollen, dass der resultierende Datensatz sein oder werden, wird das vollständige Objekt (Wert) Sie übergeben.
Können Sie
Methode.
Mit FindAndModify Sie können genau angeben, welche Felder eines vorhandenen Datensatzes zu ändern, und überlassen Sie den rest allein.
Sehen Sie ein Beispiel hier.
Das einzige, was Sie benötigen, aus dem vorhandenen Datensatz wäre seine _id, die 2 geheimen Felder müssen nicht geladen werden oder immer abgebildet, wieder in Ihrem POCO-Objekt.
MongoCollection<T>
mit der Werte einer InstanzT
, außer einem bestimmten, bekannten Satz von Feldern. Etwas entlang der Linien vonUpdate<T>.EverythingFrom(someObject).Except(x => x.ExceptThis).Except(x => x.ExceptThat)
Vorhanden sein, fügen Sie weitere Kriterien in der Where-Anweisung. Wie diese:
Gut, es gibt viele Möglichkeiten, um aktualisierte Wert in
mongodb
.Unten ist eine der einfachste Weg, den ich wählen, um zu aktualisieren ein Feld Wert in mongodb collection.
Hoffe das wird dir helfen 🙂
Hatte das gleiche problem und da wollte ich 1 generische Methode für alle Arten und nicht wollen, um meine eigene Umsetzung mit der Spiegelung, die ich am Ende mit der folgenden generischen Lösung (vereinfacht zu zeigen, all in one Methode):
Hinweise:
Wenn es um performance geht, schreiben Sie benutzerdefinierte update-Methoden, die mit
Builders<T>.Update
P. S.: Es ist offensichtlich, sollte umgesetzt wurden MongoDB .Treiber Net, aber ich konnte nicht finden es überall in den docs, vielleicht habe ich einfach geschaut das der falsche Weg.