[英]LinqToMongo Inject
我有一個使用MongoDB的.NET應用程序,所以我正在使用Mongo C#驅動程序。
我當前使用的驅動程序版本為1.9.2,我的應用程序中的所有內容均按預期工作。 但是,我試圖將Mongo驅動程序升級到最新版本2.7.0,但是在使某些功能正常工作時遇到了一些問題。
下面的代碼段是我面臨最新版本驅動程序問題的地方
public IQueryable<Location> SearchByLocationDistance(double latitude, double longitude, double rangeInKm)
{
var rangeInMeters = rangeInKm * 1000;
var point = GeoJson.Point(GeoJson.Geographic(longitude, latitude));
var locationClause = Query<Location>.Near(y => y.Address.GeoPoint, point, rangeInMeters);
var query = collection.AsQueryable().Where(x => locationClause.Inject());
return query;
}
我收到的錯誤消息是:
LinqToMongo.Inject方法僅適用於LINQ Where子句。
做一些研究,似乎已解決了此問題-https://jira.mongodb.org/browse/CSHARP-1445
但是,我不確定是否需要使用新語法來實現相同的功能。
我嘗試如下更改代碼:
var filter = Builders<Location>.Filter.Near(y => y.Address.GeoPoint, point, rangeInMeters);
var query = collection.AsQueryable().Where(x => x.filter.Inject());
但是使用該代碼我得到了不同的錯誤消息- $ match聚合內不允許$ near
使用以下代碼進行了此操作:
public IQueryable<Location> SearchByLocationDistance(double latitude, double longitude, double rangeInKm)
{
var rangeInMeters = rangeInKm * 1000;
var point = GeoJson.Point(GeoJson.Geographic(longitude, latitude)); //long, lat
var filter = Builders<Location>.Filter.Near(y => y.Address.GeoPoint, point, rangeInMeters);
return collection.Find(filter).ToList().AsQueryable();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.