首页 文章

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

提问于
浏览
3

我正在尝试使用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; }
}

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

1 回答

  • 4

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

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

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

    当前版本的mongodb c#driver中没有 $ . check here

相关问题