使用MongoDB C#Driver将项添加到嵌套对象的嵌套数组中

时间:2015-01-13 18:53:30

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

我正在尝试使用MongoDB C#驱动程序将项添加到BSON文档内的嵌套数组中。我搜索了SO,但到目前为止我找到的所有例子都没有达到我想要做的那样。

我有一个顶级"组织"在Mongo收集。它包含多个具有以下结构的Organization对象:

{
   "id":"Org1",
   "Name":"First Org",
   "Divisions":[
      {
         "id":"Div1",
         "Name":"First Division",
         "UsersInDivision":[
            "User1",
            "User2"
         ]
      }
   ]
}

我有以下POCO课程

public class Organization
{
    public string Id { get; set; }
    public string Name { get; set; }
    public IList<Division> Divisions { get; set; }
}

public class Division
{
    public string Id { get; set; }
    public string Name { get; set; }
    public IList<string> UsersInDivision { get; set; }
}

我想添加字符串&#34; User3&#34;分部&#34; Div1&#34;的UsersInDivision集合或组织&#34; Org1&#34;。实现这一目标的最佳方法是什么?我试图在可能的情况下使用强类型版本的MongoDB数据访问类。

1 个答案:

答案 0 :(得分:4)

没有用于执行此类操作的类型化版本查询,您必须使用基于字符串的查询

var query = Query.And(Query.EQ("id", "Org1"), Query.EQ("Divisions.id", "Div1"));
collection.Update(query, Update.AddToSet("Divisions.$.UsersInDivision", "User3"));

您无法使用强类型版本的原因是$运算符。

当前版本的mongodb c#驱动程序中没有$check here