簡體   English   中英

LinqToMongo注入

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM