需要帮助通过C#驱动程序访问mongo中的嵌套对象
本文关键字:mongo 嵌套 对象 访问 驱动程序 帮助 | 更新日期: 2023-09-27 18:20:43
我正试图从数组中删除一个对象,但我认为这与访问嵌套对象进行更新的过程相同。
假设我的数据看起来像这个
results myColl01 = {_id:1
a:100
b:[{aa:500,
bb:1000},
{aa:700,
bb:2000}]
}
我想从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=
这MongoConnectionHandler.MongoCollection.Update(查询,更新);
我知道可以通过去掉来完成,但我希望避免在查询中使用文字。
返回的错误如下:
Argument 2: cannot convert from
'MongoDB.Driver.IMongoQuery' to
'System.Func<MongoDB.Driver.Builders.QueryBuilder<MyProject.MyColl01_B>,
MongoDB.Driver.IMongoQuery>'
所以我在其他地方偶然找到了答案。要访问要从中提取的子类/文档,需要使用生成器。
IMongoUpdate update = Update<MyColl01>.Pull(mc01 => mc01.b,
builder => builder.EQ(b => b.aa, mc01B_AA_val));