是否有直接的方法来更新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
可用的数组中更新一个实体。请建议。
***在相关问题部分的右侧,所有节目都显示使用对象项的索引更新对象的嵌套数组,这对我来说是不可能的
答案 0 :(得分:5)
而不是update.Set("Courses.$.Level", "Updated Level");
你也可以这样做:
update.Set(x => x.Courses[-1].Level, "Updated Level");