MongoDB更新文档并添加新属性

时间:2016-02-22 19:01:48

标签: c# mongodb

我正在使用C#3.2驱动程序并尝试插入或更新文档,并且(可能)添加一些新字段。我的代码如下所示:

var collection = database.GetCollection<BsonDocument>("User");
var filter = Builders<BsonDocument>.Filter.Eq("UserID", "mkemp");

var update = Builders<BsonDocument>.Update
        .Set("FirstName", "Mike")
        .Set("LastName", "Kemp");


update.AddToSet("Age", "57");

var result = collection.UpdateOne(filter, update , new UpdateOptions() { IsUpsert = true });

创建了FirstName和LastName,但未创建或更新Age字段。我正在根据表单发布保存数据,因此我事先并不知道要发布哪些字段。有没有办法完成上述任务?

1 个答案:

答案 0 :(得分:1)

这比你想象的容易:在Mongo中,如果不存在属性,则会创建。

AddToSet不是设置简单值,而是将项添加到存储在给定属性名称中的数组,并实现 set 语义。也就是说,如果您使用AddToSet添加商品,则会创建一系列唯一商品(taken from Mongo docs):

  

$ addToSet运算符向数组添加值,除非值为   已存在,在这种情况下,$ addToSet对该数组不执行任何操作。

请参阅以下docs for $set:

  

如果该字段不存在,$ set将添加一个新字段   指定的值,前提是新字段不违反类型   约束。如果为不存在的字段指定虚线路径,   $ set将根据需要创建嵌入文档以实现   通往该领域的虚线路径。