有人可以解释如何保存到mongodb多级模型! 我知道可能在某处我可以找到答案但我在这里找到的并不适合我。
我有几种型号A,B,C,D,E:第一级保存就可以了! 二级保存还可以! 第三级我喜欢这样:
IMongoQuery query = Query.And(Query<A>.EQ(a => a.A_Id, data.A_Id),
Query<A>.ElemMatch<Wall>(a => a.B, b => b.EQ(tt => tt.B_Id, data.B_Id)));
var update = Update.Push("B.$.C", data.C.ToBsonDocument());
collection.Update(query, update);
似乎工作;
但我如何保存/更新下一级呢?
第四级我尝试像这样保存:
var query = Query.And(Query<A>.EQ(a => a.A_Id, data.A_Id),
Query<A>.ElemMatch(a => a.B, bb => bb.EQ(tt => tt.B_Id, data.B_Id)),
Query<B>.ElemMatch(b => b.C, c => c.EQ(wm => wm.C_Id, data.C_Id)));
var update = Update.Push("C.$.D", data.D.ToBsonDocument());
collection.Update(query, update);
可能有人可以向我解释如何使用C#Driver正确编写查询。或者我太傻了,做错了什么!
答案 0 :(得分:0)
像这样工作,但是正确无误:
var query = Query.And(Query<A>.EQ(item => item.A_Id, data.A_Id),
Query<A>.ElemMatch<B>(t => t.B, t => t.EQ(tt => tt.B_Id, data.B_Id)),
Query<A>.ElemMatch<Wall>(t => t.B, t => t.ElemMatch<C>(tt => tt.C, tt =>
tt.EQ(ttt => ttt.C_Id, data.C_Id))));
var update = Update.Push("B.0.C.$.D", data.D.ToBsonDocument());
collection.Update(query, update);