需要帮助通过C#驱动程序访问mongo中的嵌套对象

时间:2014-09-04 15:23:27

标签: c# mongodb nested

我试图从数组中删除一个对象,但我假设这也是访问嵌套对象以进行更新的相同过程。

假设我的数据看起来像这样

results myColl01 = {_id:1
                    a:100
                    b:[{aa:500,
                        bb:1000},
                       {aa:700,
                        bb:2000}]
                   }

我想从b中删除b,其中b.aa == 500

以下是我使用的C#代码:

int mc01_id = 1;
int mc01B_AA_val = 500;
IMongoQuery query = Query<MyColl01>.EQ(mc01=> mc01.Id, id);
IMongoUpdate update = Update<MyColl01>.Pull(mc01 => mc01.b,
                              Query<MyColl01_B>.EQ(mc01b => mc01b.aa, mc01B_AA_val));

WriteConcernResult updateResult =
        this.MongoConnectionHandler.MongoCollection.Update(查询,更新);

我知道可以通过取出来完成,但我想避免在查询中使用文字。

返回的错误如下:

Argument 2: cannot convert from
'MongoDB.Driver.IMongoQuery' to
'System.Func<MongoDB.Driver.Builders.QueryBuilder<MyProject.MyColl01_B>,
       MongoDB.Driver.IMongoQuery>'

1 个答案:

答案 0 :(得分:1)

所以我在其他地方偶然找到了答案。 要访问子类/文档,您将需要使用构建器。

IMongoUpdate update = Update<MyColl01>.Pull(mc01 => mc01.b,
                          builder => builder.EQ(b => b.aa, mc01B_AA_val));