FluentMongo LINQ:如何查询类的子列表

本文关键字:列表 查询 LINQ 何查询 FluentMongo | 更新日期: 2023-09-27 18:34:02

假设我有一个这样的类:

public class BOa
{
    public ObjectId Id { get; set; }
    public string Name { get; set; }
    public List<BOb> VisiteEffettuate = new List<BOb>();
}
public class BOvalues
{
    public DateTime Data { get; set; }
    public int Age { get; set; }
    public int Score { get; set;}
 }

在MongoDB中,需要明确的是,我收集了许多BOa。它们中的每一个都包括许多(列表...BO值我想知道如何使用FluentMongo LINQ(或其他方法)获取BO值列表,例如,分数大于一个值或两个值之间的年龄。

我想使用SelectMany,但它似乎在fluentmongo中不受支持。

获得此结果的最佳方法是什么?

提前谢谢你!

编辑:我尝试在LINQ上使用QueryBuilder...例如:

        var query = MongoDB.Driver.Builders.Query.ElemMatch("VisiteEffettuate", MongoDB.Driver.Builders.Query.And( 
                MongoDB.Driver.Builders.Query.GT("Age", 32),
                MongoDB.Driver.Builders.Query.EQ("Name", "xxxx")
                )
                );
        var res = pazienti.Find(query);

。等等。它似乎有效。但是 QueryBuilder 没有那么多文档,而且(我不确定)不可能以编程方式创建查询(例如,动态 LINQ)。

FluentMongo LINQ:如何查询类的子列表

可以使用 Any 运算符重写查询。

col.AsQueryable().Where(x => x.Any(y => y.Age < 40));

这现在将在FluentMongo中工作。 但是,FluentMongo不再是一个受支持的项目,因为官方驱动程序获得了linq支持。

这目前在官方驱动程序中不起作用,但计划在 1.5 版中使用。 我建议您暂时坚持使用查询构建器,直到 1.5 发布。

您可以使用官方 C# 驱动程序,该驱动程序现在本机支持 LINQ 查询。 我用过它,效果很好。

在此处查看文档:http://www.mongodb.org/display/DOCS/CSharp+Driver+LINQ+Tutorial