假设我有一堂这样的课:
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,但 fluencemongo 似乎不支持它。
获得此结果的最佳方法是什么?
提前谢谢您!
编辑:我尝试在 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 中使用。但是,由于官方驱动程序获得了 linq 支持,FluentMongo 不再是受支持的项目。
这目前在官方驱动程序中不起作用,但预计在 1.5 版本中起作用。我建议您暂时坚持使用查询构建器,直到 1.5 版本发布。
关于c# - FluentMongo LINQ : How to query a sublist of a class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10584425/