繁体   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