2

假设我有这样的课程:

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。它们中的每一个都包含许多(...列表)BOvalues 我想知道如何使用 FluentMongo LINQ(或其他方法)获得一个 BOvalues 列表,例如,Score 大于一个值或两个值之间的 Age。

我想使用 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)。

4

2 回答 2

2

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

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

这现在可以在 FluentMongo 中使用。但是,由于官方驱动程序获得了 linq 支持,FluentMongo 不再是受支持的项目。

这目前在官方驱动程序中不起作用,但计划用于 1.5 版。我建议你现在坚持使用查询构建器,直到 1.5 出来。

于 2012-05-15T18:55:23.997 回答
0

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

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

于 2012-05-14T13:51:23.810 回答