更新MongoDB

时间:2016-08-08 22:09:02

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

是否有直接的方法来更新MongoDB中嵌套的实体数组。我正在使用MongoDB C# Driver从应用程序进行数据库调用。下面是一个例子:假设我有一个Student集合,其中每个文档都有一个Course的嵌套数组,其中填充了一些必填字段,而Course本身就是一个单独的集合,如:

{
 "_id": "234dssfcv456",
 "Name": "Jean Douglas",
 "Age": 32,
 "Courses": 
  [
    {
       "_id": "1234",
       "Name": "Computer Science",
       "Level": "Basic" 
    },
    {
       "_id": "3456",
       "Name": "Bio Science",
       "Level": "Intermediate" 
    }
  ] 
}

我知道我可以通过下面的索引更新嵌套实体,但我不知道索引,而只知道嵌套的Course对象Id

db.College.Student.update(
    {"Student._id": "234dssfcv456"}, 
    {$set: {
        "Student.$.Courses.1.Level": "Basic"
    }}

现在,我正在阅读整个嵌套的课程数组 - >在应用程序端进行修改 - >然后传递整个数组以进行更新,并使用提交的名称"Courses"来替换现有数组。

但是在想,有没有办法可以在Id可用的数组中更新一个实体。请建议。

***在相关问题部分的右侧,所有节目都显示使用对象项的索引更新对象的嵌套数组,这对我来说是不可能的

1 个答案:

答案 0 :(得分:5)

而不是update.Set("Courses.$.Level", "Updated Level");你也可以这样做:

update.Set(x => x.Courses[-1].Level, "Updated Level");

来源:http://www.mattburkedev.com/updating-inside-a-nested-array-with-the-mongodb-positional-operator-in-c-number/