Mit MongoDB, habe ich Probleme beim Hinzufügen von en-Element zu einem Array, wenn das Array null ist. AddToSet funktioniert wie erwartet, wenn ich das Element von der Konsole hinzufüge. Ich benutze den offiziellen C# -Treiber von 10gen.Update mit AddToSet nicht Nullwert mit MongoDB aktualisieren C#
var query = Query.EQ("_id", objectId);
var itemDoc = item.ToBsonDocument();
//items is an array but currently null
var update = MongoDB.Driver.Builders.Update.AddToSet("items", itemDoc); // YUNoWork?
//somefield doesn't exist
var workingUpdate = MongoDB.Driver.Builders.Update.AddToSet("somefield", itemDoc); //works fine
var collection = DataBase.GetCollection<MyObject>(CollectionName);
collection.Update(query, update); // doesn't work
collection.Update(query, workingUpdate); // works
Ist das erwartete Verhalten? Wenn ja, gibt es eine allgemeinere Möglichkeit, Elemente zu einem Array hinzuzufügen?
Die Verwendung von BsonIgnoreIfNull für Listen löst die Impedanzabweichung zwischen den C# -Klassendefinitionen und MongoDB auf. Vielen Dank! – HatAndBeard
Nur um für jeden anderen, der diese Antwort sieht, klarzustellen, müssen Sie Ihre vorhandenen Daten bereinigen, damit dies funktioniert. Mit anderen Worten, wenn Sie bereits ein Dokument mit einer Null-Eigenschaft haben, müssen Sie die Eigenschaft oder das Dokument löschen. _Dann wird dies das nächste Mal, wenn Sie AddToSet verwenden. Ich hatte das Attribut hinzugefügt, aber es funktionierte immer noch nicht, weil die Daten bereits mit dem Nullwert gespeichert wurden. – adam0101