我有以下空格FilterDefinition
:
var filter = Builders<MyDocument>
.Filter
.Near(x => x.Point, point, 1000);
有没有办法将其纳入IQueryable
表达式?
例如,我可能有以下LINQ语句。我怎样才能包含上述条件?从我所看到的,没有LINQ支持空间查询。
return Database
.GetCollection<Places>("Places")
.AsQueryable()
.Where(x => x.StartDate.Date <= date)
.Where(x => x.EndDate.Date >= date)
.Where(x => keys.Contains(selectedKeys))
.ToList();
我正在使用新的2.2.2库。
答案 0 :(得分:4)
.NET驱动程序jira项目中有一项功能请求:https://jira.mongodb.org/browse/CSHARP-1445。所以,目前答案是肯定的,但希望很快。
然而,有一个&#34; Where&#34; FilterDefinitionBuilder(https://github.com/mongodb/mongo-csharp-driver/blob/master/src/MongoDB.Driver/FilterDefinitionBuilder.cs#L1286)上的方法,允许您将LINQ谓词包含在正常的查找/聚合查询中。
答案 1 :(得分:2)
从2.4开始,您可以使用Inject()
来完成此操作。
请参阅:https://app.flourish.studio
在提供示例代码(略有更正)的情况下,将是:
var filter = Builders<Places>
.Filter
.Near(x => x.Point, point, 1000);
return Database
.GetCollection<Places>("Places")
.AsQueryable()
.Where(x => x.StartDate.Date <= date)
.Where(x => x.EndDate.Date >= date)
.Where(x => keys.Contains(selectedKeys))
.Where(x => filter.Inject())
.ToList();