【问题标题】:Add item to nested array of nested object using MongoDB C# Driver使用 MongoDB C# 驱动程序将项目添加到嵌套对象的嵌套数组中
【发布时间】:2015-01-13 18:53:29
【问题描述】:

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

我在 Mongo 中有一个顶级的“组织”集合。这包含具有以下结构的多个组织对象:

{
   "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 数据访问类的强类型版本。

【问题讨论】:

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


    【解决方案1】:

    这样的事情没有类型化的版本查询,你必须使用基于字符串的查询

    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

    【讨论】:

    • collection.Update 这在当前驱动程序中不再可用
    • @Kalanamith 使用构建器.Update.AddToSet
    猜你喜欢
    • 1970-01-01
    • 2017-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多