MongoDB的。 C#。无法将多级模型保存到db

时间:2015-02-09 11:20:45

标签: mongodb mongodb-.net-driver

有人可以解释如何保存到mongodb多级模型! 我知道可能在某处我可以找到答案但我在这里找到的并不适合我。

我有几种型号A,B,C,D,E:

  • A
  • _id
  • 某个领域
  • B []
    • _id
    • 某个领域
    • C []
      • _id
      • 某个领域
      • d []
        • _id
        • 某个领域
        • E []
          • _id
          • 某个领域

第一级保存就可以了! 二级保存还可以! 第三级我喜欢这样:

        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正确编写查询。或者我太傻了,做错了什么!

1 个答案:

答案 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);