【问题标题】:How to add a $geoWithin constraint to a query in parse server?如何在解析服务器的查询中添加 $geoWithin 约束?
【发布时间】:2018-06-14 04:39:10
【问题描述】:

我尝试将$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 字段的文档,该字段位于地理坐标的一定半径内(以公里为单位)?

【问题讨论】:

  • 您的数据库中的几何形状如何?
  • @AndréClaudino 使用解析服务器我假设位置字段索引是“2d”。这些值存储为 lat 和 long 值。

标签: mongodb-query parse-server


【解决方案1】:

原来 Parse Server 不支持这种类型的查询。但是由于Parse Server是一个开放的source 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 起,功能尚不可用,等待合并拉取请求。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-06
    • 2013-10-24
    • 1970-01-01
    • 2018-09-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多