我做了一个过滤器来对我的 Mongodb 数据库中的数据进行地理空间查询,这个过滤器工作正常,直到我使用另一个地理空间过滤器对该过滤器执行“与”操作,但指向我正在查询的集合上的不同属性。当我添加这个过滤器时,我得到一个异常说明:
消息:MongoDB.Driver.MongoCommandException:命令查找失败:geoNear 表达式太多。
这是第一个过滤器,
var point = GeoJson.Point(GeoJson.Geographic(longitude: annEntityaAttr.CollectionLocation.Longitude,
latitude: annEntityaAttr.CollectionLocation.Latitude));
filter = Builders<AnnouncementEntity>.Filter.Near(a => a.CollectionLocation, point, annEntityaAttr.MaxDistanceFromLocationInKM * metersFor1KM);
这是我添加第二个过滤器的方法:
var point = GeoJson.Point(GeoJson.Geographic(longitude: annEntityaAttr.DepositLocation.Longitude,
latitude: annEntityaAttr.DepositLocation.Latitude));
var secondFilter = Builders<AnnouncementEntity>.Filter.Near(a => a.DepositLocation, point, annEntityaAttr.MaxDistanceFromLocationInKM * metersFor1KM);
filter = filter & secondFilter;
通常,当将 & 应用于两个过滤器时,它可以工作,但在这种情况下,有人对此有解决方案吗?