Обновление с AddToSet не обновляет нулевое значение с MongoDB C # - PullRequest
5 голосов
/ 29 марта 2012

Используя MongoDB, у меня возникают проблемы при добавлении элемента en в массив, когда массив равен нулю.AddToSet работает должным образом, если я добавляю элемент из консоли.Я использую официальный драйвер C # от 10gen.

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

Это ожидаемое поведение?Если да, есть ли более общий способ добавления элементов в массив?

1 Ответ

10 голосов
/ 29 марта 2012

Проделал некоторое копание, в соответствии с некоторыми другими комментариями - как вы говорите, если элемент не существует, он работает, но если он нулевой - он не работает.Очевидно, это сделано специально.

Одним из предложений было добавить атрибут BsonIgnoreIfNull в массивы, что будет означать, что ваш AddToSet будет работать.

...