var query = Query<MongoData>.EQ(e => e.name, someString);
var entity = collection.FindOneAs<MongoData>(query);
这将返回MongoData
collection
对象,其中属性name
与我发送的字符串(someString
)匹配。
我想为此添加另一个查询,以获取与name
和files.author
匹配的实体
collection
是List
,files
是List
内的collection
。
目前,我正在艰难地完成这项工作,只是在找到匹配项之前循环entity.files
,但这很痛苦。
因此,如果一个MongoData列表包含一个名称为X
的对象和一个包含files
作者的Y
列表,我想要返回此一个
答案 0 :(得分:2)
您可以这样做,并一次查询多个属性:
var query = Query.And(
Query<MongoData>.EQ(e => e.name, someString),
Query<MongoData>.ElemMatch(
e => e.files,
q => q.EQ(f => f.author, someAuthorName)
)
);
后一个子查询使用ElemMatch<TValue>
查询函数,该函数需要一个返回可枚举子对象的表达式,以及一个对每个子对象执行另一个查询的函数。