5
使用MongoDB时,我无法添加en元素时,数组为null。如果我从控制台添加项目,AddToSet按预期工作。我使用10gen的官方C#驱动程序。更新与AddToSet不更新null值与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
这是预期的行为吗?如果是这样,是否有一种更通用的方式将项目添加到数组中?
对列表使用BsonIgnoreIfNull可解决C#类定义和MongoDB之间的阻抗不匹配问题。谢谢! – HatAndBeard 2012-03-30 14:51:49
只是为了澄清谁看到这个答案的人,你必须清理你的现有数据才能工作。换句话说,如果你已经有一个空属性的文档,你将不得不删除属性或文档。 _那么这将在下次使用AddToSet时起作用。我已经添加了该属性,但它仍然不起作用,因为数据已经保存为null。 – adam0101 2015-10-22 21:46:55