Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用通用查询生成器查询集合_C#_Mongodb - Fatal编程技术网

C# 如何使用通用查询生成器查询集合

C# 如何使用通用查询生成器查询集合,c#,mongodb,C#,Mongodb,我正在使用mongocsharpdriver nuget包(版本1.11.0)对mongo数据库运行查询 在c#中创建查询对象时,我可以执行以下操作: var query = Query.EQ("RootValue", "foo"); 我可以使用更好的通用查询生成器来执行此操作: var query = Query<RootObject>.EQ(x=>x.RootValue, "foo"); 这里的Things是一组对象,这些对象上有一个字符串(Value)。在这种情况下,

我正在使用mongocsharpdriver nuget包(版本1.11.0)对mongo数据库运行查询

在c#中创建查询对象时,我可以执行以下操作:

var query = Query.EQ("RootValue", "foo");
我可以使用更好的通用查询生成器来执行此操作:

var query = Query<RootObject>.EQ(x=>x.RootValue, "foo");
这里的
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;}
}
公共类根对象
{
[BsonId]
公共对象Id{get;set;}
公共IEnumerable Things{get;set;}
公共字符串根值{get;set;}
}
公共类RepeatedObject
{
公共字符串值{get;set;}
}

使用此版本的驱动程序,以下查询

var query = Query<RootObject>.ElemMatch(x => x.Things, x => x.EQ(y => y.Value, "bar"));

根据您提到的版本,您似乎正在使用相当死气沉沉的旧版驱动程序。我可以建议升级吗@是的,我知道这是一个旧版本(这就是我引用这个版本的原因)。你知道找时间升级是什么感觉吗?现在可以了,为什么要花时间呢?:)不过,我可以看看是否能把它再次列入我们的开发计划。尤其是如果它能做得更好的话酷。我期待类似于
{“Things.Value”:“bar”}
的东西,但很明显,这与您拥有的东西(根据)。我想它会对他们一视同仁。
var query = Query<RootObject>.ElemMatch(x => x.Things, x => x.EQ(y => y.Value, "bar"));
{ Things: { $elemMatch: { Value: "bar" } } }