更新阵列

时间:2016-04-30 23:08:05

标签: c# mongodb mongodb-.net-driver

我试图更新Mongo中的一个对象,其中包含一个对象数组。其他字段工作正常,但我无法弄清楚如何告诉它只是在更新期间设置一个数组。

var update = new UpdateDefinitionBuilder<MyPost>()
  .Set(m => m.Title, "Some Title") //works fine
  .Set(m => m.Contact, myPost.Contacts.ToArray()); //throws compiler error

编译器吐出:

  

错误CS1660:无法将lambda表达式转换为type   &#39;&FieldDefinition LT; MyPost,联系[]&gt;&#39;因为它不是代表   类型。

1 个答案:

答案 0 :(得分:0)

我意识到这已经过时了,但是我遇到了类似的问题,并且需要进行一些搜索来拼凑答案。

var bsonArray = new BsonArray(BsonDocumentWrapper.CreateMultiple(typeof(Contact), myPost.Contacts));
var update = new UpdateDefinitionBuilder<MyPost>()
    .Set(m => m.Title, "Some Title") 
    .Set(m => m.Contacts, bsonArray);

请注意,如果您未定义类型CreateMultiple(typeof(Contact),..,则字段"_t" : "SomeNamespace.Contact"会添加到数据库中数组的每个元素