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} –