使用AddToSet更新不使用MongoDB C#更新null值

本文关键字:更新 null MongoDB AddToSet 使用 | 更新日期: 2023-09-27 18:29:33

使用MongoDB,当数组为null时,我很难将en元素添加到数组中。如果我从控制台添加该项,AddToSet将按预期工作。我正在使用10gen的官方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

这是预期的行为吗?如果是,是否有更通用的方法将项添加到数组中?

使用AddToSet更新不使用MongoDB C#更新null值

根据其他一些评论进行了一些挖掘-就像你说的,如果元素不存在,它就可以工作,但如果它为null,它就不工作。显然这是故意的。

一个建议是将BsonIgnoreIfNull属性添加到数组中,这意味着AddToSet就可以工作了。

放置一个空数组而不是null值。