我使用的是springdatamongodb2.2.4,我试图用多个条件将分页文档作为给定点附近的geopage。
由于未正确生成请求,使用地理空间查询似乎无法按预期工作:
findByLocationNearAndCategories(Point point, Distance distance, String category, Pageable pageable)
=>
[{ "$geoNear" : { "query" : { "categories" : { "x" : 3.8235442, "y" : 43.5833389}}, "maxDistance" : 0.1567855942887398, "distanceMultiplier" : 6378.137, "near" : [3.8235442, 43.5833389], "spherical" : true, "distanceField" : "dis"}}, { "$limit" : 4}]
或
findByCategoriesAndLocationNear(String category, Point point, Distance distance, Pageable pageable)
=>
[{ "$geoNear" : { "query" : { "categories" : "myCategory", "location" : { "$nearSphere" : { "x" : 3.8235442, "y" : 43.5833389}, "$maxDistance" : 0.1567855942887398}}, "maxDistance" : 0.1567855942887398, "distanceMultiplier" : 6378.137, "near" : [3.8235442, 43.5833389], "spherical" : true, "distanceField" : "dis"}}, { "$limit" : 4}]
这会导致错误“太多geonar表达式”。
我尝试过使用mongooperations,但我只能获得georesults,而不是使用geopage分页的结果。
GeoResults<MyClass> result = mongoOperations.query(MyClass.class)
.as(MyClass.class)
.near(NearQuery.near(point)
.maxDistance(distance)
.query(new Query(Criteria.where("categories").is("myCategory")))
.with(page))
.all()
有什么方法可以达到我的目标吗?谢谢!
编辑
我现在通过第二次请求来获得总计数来管理它,但是我希望以一种优化的方式来实现它。
GeoResults<MyClass> geoResults = mongoOperations.query(MyClass.class)
.as(MyClass.class)
.near(NearQuery.near(point)
.maxDistance(distance)
.query(new Query(Criteria.where("categories").is("myCategory")))
.with(page))
.all();
long count = mongoOperations.count(new Query(Criteria.where("categories").is("myCategory").and("location").near(point).maxDistance(distance.getValue())), MyClass.class);
return new GeoPage<MyClass>(geoResults, page, count);
暂无答案!
目前还没有任何答案,快来回答吧!