我正在使用 mongocsharpdriver nuget 包(版本 1.11.0)对 mongo 数据库运行查询。
在 C# 中创建查询对象时,我可以这样做:
var query = Query.EQ("RootValue", "foo");
我可以改用更好的通用查询生成器来执行此操作:
var query = Query<RootObject>.EQ(x=>x.RootValue, "foo");
现在考虑这个查询::
var query = Query.EQ("Things.Value", "bar");
这里的 Things
是一组对象,上面有一个字符串 (Value
)。在这种情况下,查询将返回在任何事物的值中具有匹配项的任何对象。
如何使用通用查询构建器编写此查询?
我不知道我需要什么样的表达才能正确翻译成我想要的...
为了更清楚这里是我的示例的类:
public class RootObject
{
[BsonId]
public ObjectId Id {get; set;}
public IEnumerable<RepeatedObject> Things {get; set;}
public string RootValue {get; set;}
}
public class RepeatedObject
{
public string Value {get; set;}
}
最佳答案
使用这个版本的驱动,查询如下
var query = Query<RootObject>.ElemMatch(x => x.Things, x => x.EQ(y => y.Value, "bar"));
将被翻译成所需的 MongoDB 查询:
{ Things: { $elemMatch: { Value: "bar" } } }
关于c# - 如何使用通用查询构建器查询集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51971351/