如何在解析服务器中向查询添加$ geoWithin约束?

时间:2018-06-06 00:07:18

标签: mongodb-query parse-server

我尝试向$geoWithin添加Parse.Query约束,如下所示:

var query = new Parse.Query("MyCollection");
var jsonQuery = query.toJSON();

jsonQuery.where.location = {
    "$geoWithin": {
        "$centerSphere": [
            [geoPoint.longitude, geoPoint.latitude],
            10 / 6371.0
        ]
    }
};

query.withJSON(jsonQuery);

它抛出错误:

  

坏$ geoWithin值; $ polygon应包含至少3个GeoPoints。

原因显然是Parse Server的Mongo Transformer只接受带有$geoWithin的多边形参数。

如何添加查询约束,将结果限制为在地理坐标的某个半径范围内具有location字段的文档?

1 个答案:

答案 0 :(得分:0)

事实证明,Parse Server不支持这种类型的查询。但由于Parse Server是一个开放的ource project on Github,我添加了功能*。

问题中的代码可以正常运行,并且可以将地理位置查询中的新sorted参数设置为false

var location = new Parse.GeoPoint(37.708813, -122.526398);
var distance = 5;
var sorted = false;

var query = new Parse.Query(MyCollection);
query.withinKilometers("location", location, distance, sorted);

* Parse Server v2.8.2和JS SDK v1.11.1中尚未提供的功能,等待拉取请求的合并。