代码之家  ›  专栏  ›  技术社区  ›  Chris

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

  •  3
  • Chris  · 技术社区  · 6 年前

    我正在使用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;}
    }
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   dnickless    6 年前

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

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

    { Things: { $elemMatch: { Value: "bar" } } }