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)。
可以使用 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