c# - 如何使用通用查询构建器查询集合

标签 c# mongodb

我正在使用 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/

相关文章:

javascript - 异步代码和 mongodb 的问题

MongoDB Schema Design - 实时聊天

node.js - Nodejs表达如何将响应发送回浏览器

c# - 使用存储库模式与 Entity Framework 一起使用的自动映射器?

c# - 什么时候对不可变类型使用值和引用类型? (。网)

c# - 如何检测一个 URL 是否重定向到另一个 URL?

node.js - 如何从现有的 MongoDB 数据库中获取数据?

mongodb - Spring Data mongodb 散列索引

c# - 我在滥用 C# 泛型吗?

C# GDI Invert Graphics 在 X 轴上翻转