0
我想要编辑集合中多个数组中可能存在的元素。MongoDB:在数组中编辑元素
public class Class
{
[BsonId]
public Guid Id { get; set;}
public string Name {get; set;}
public List<Student> Students {get; set;}
}
public class Student
{
[BsonId]
public Guid Id {get; set;}
public string Name {get; set;}
public string Grade {get; set;}
}
然后,我的类集合会是什么样子
{
"_id" : NUUID("..."),
"Name" : "Computer Science",
"Students" : [
{
"_id" : NUUID("..."),
"Name" : "Chris"
"Grade" : "A"
},
{
"_id" : NUUID("..."),
"Name" : "Bob"
"Grade" : "B"
}
}
我的学生收取会是什么样子
{
"_id" : NUUID("..."),
"Name" : "Chris Eastwood"
"Grade": "C
}
现在,当一个学生更新他的信息,我想他的信息以进行更新每班。
我试图做的事:
// given student that has been edited
var query = Query.EQ("Students._id", student.Id);
var update = Update<Class>
.Pull(c => c.Students, x => x.EQ(q => q.Id, student.Id))
.Push(c => c.Students, student)
Context.Class.Update(query,update,UpdateFlags.Multi);
但是,这并不工作,因为你
我在想,“不能在同一时间更新学生与学生”有没有办法,只是更新所有每个数组中包含该学生的每个班级的学生?
谢谢!
谢谢何塞。所以你说'$'足够聪明,可以进入数组的正确元素并更新一个属性? 示例: $ set:{'Students。$。Name':student.Name} $ set:{'Students。$。Grade':student.Grade} – Beastwood
这是正确的。我一直用这个, –
它会是这样的:$ set:{'Students。$。Name':student.Name,'Students。$。Grade':student.Grade} –