Użycie MongoDB, mam problem z dodaniem elementu en do tablicy, gdy tablica ma wartość null. AddToSet działa zgodnie z oczekiwaniami, jeśli dodaję element z konsoli. Używam oficjalnego sterownika C# z 10gen.Aktualizacja z AddToSet nie aktualizowanie wartości null z MongoDB 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
Czy to oczekiwane zachowanie? Jeśli tak, czy istnieje bardziej ogólny sposób dodawania elementów do tablicy?
Użycie BsonIgnoreIfNull dla list rozwiązuje niedopasowanie impedancji między definicjami klasy C# i MongoDB. Dzięki! – HatAndBeard
Aby wyjaśnić sytuację komukolwiek, kto widzi tę odpowiedź, musisz wyczyścić istniejące dane, aby działało. Innymi słowy, jeśli masz już dokument z właściwością null, musisz usunąć właściwość lub dokument. _Then_ to zadziała przy następnym użyciu AddToSet. Dodałem atrybut, ale nadal nie działa, ponieważ dane zostały już zapisane z wartością null. – adam0101