使用MongoDB C#驱动程序将项目添加到嵌套对象的嵌套数组中

Jam*_*mes 4 .net c# mongodb mongodb-.net-driver

我正在尝试使用MongoDB C#驱动程序将项目添加到BSON文档内的嵌套数组中。我已经搜索过SO,但是到目前为止我发现的所有示例都与我尝试做的不匹配。

我在蒙哥有一个顶级的“组织”收藏。它包含多个具有以下结构的组织对象:

{
   "id":"Org1",
   "Name":"First Org",
   "Divisions":[
      {
         "id":"Div1",
         "Name":"First Division",
         "UsersInDivision":[
            "User1",
            "User2"
         ]
      }
   ]
}
Run Code Online (Sandbox Code Playgroud)

我有以下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; }
}
Run Code Online (Sandbox Code Playgroud)

我想将字符串“ User3”添加到“ Div1”或组织“ Org1”的UsersInDivision集合中。实现此目标的最佳方法是什么?我正在尝试尽可能使用MongoDB数据访问类的强类型版本。

Dis*_*ser 5

没有输入类型的查询可以执行此类操作,您必须使用基于字符串的查询

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

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

有没有$在MongoDB中C#驱动程序的最新版本。在这里检查