MongoDB C#foreach BsonElement

时间:2013-09-05 16:00:45

标签: c# mongodb

我有一个C#类,我实例化并用于在集合中执行CRUD操作

public class Property
{
   [BsonId]
   public long id { get; set; }

   [BsonElement("address_line")]
   public string address_line { get; set; }
   [BsonElement("city")]
   public string city { get; set; }
   [BsonElement("zip")]
   public string zip { get; set; }
}

我希望能够使用foreach循环并使用$ set构造更新命令而不指定每个元素,如下所示:

var updateValues = new List<UpdateBuilder>();

foreach (var element in property.Elements)
    updateValues.Add(Update.Set(element.Name, element.Value));

collection.Update(Query.EQ("_id", property.id), Update.Combine(updateValues));

我有可能吗?

1 个答案:

答案 0 :(得分:1)

这似乎有效:

var updateValues = new List<UpdateBuilder>();

foreach (var element in property.ToBsonDocument().Elements)
{
   if (element.Name != "_id") 
   { 
       updateValues.Add(Update.Set(element.Name, element.Value));
   }
}

collection.Update(Query.EQ("_id", property.id), Update.Combine(updateValues));

不确定是否有更好的解决方案,这可以避免链接.Set()命令,虽然我需要检查该元素是否是只读的,如_id