0

通过运行 Eve RESTful API 服务器,我可以轻松地将地理位置数据存储到 MongoDB 中。所以我存储数据如下:

loc : {
  lng: 13.01111,
  lat: 51.01111
}

验证等工作得很好。

但是:我无法找到从 REST API 中获取地理位置数据的方法。那里有示例查询在命令行上运行良好,但似乎没有办法以适当的方式查询 API。

  1. 有没有办法让 MongoDB 像查询一样针对 REST API 或
  2. 这是为此目的定制 API 的首选方式。

为了清楚起见:mongo-cmd 上已经有一个 2d 索引和 geoWithin 查询工作正常。它只是关于如何通过 REST API 进行查询。

4

2 回答 2

1

没有提到,但应该支持。我不喜欢地理的东西,但我只是试图发出一个$near查询,它返回了一个操作失败,因为我的数据库缺少必要的 2dindex。这意味着该命令已正确传递到数据库。

如果您使用的是像 Postman 这样的休息客户端,则语法应该是这样的($near为了简单起见,我使用的是这样的):

?where={"loc": {"$near": {"$geometry":{"type": "Point", "coordinates": [13,51]}}, "$maxDistance": 100}}

如果您正在使用app.get方法,请记住json.loads您的查询。希望这可以帮助。

于 2014-03-11T07:01:15.607 回答
0

MongoDB 中的点可以存储为 GeoJSON 点对象,

 loc : {
            type: 'Point',
            coordinates: [13.0111, 51.0111]
        };

或旧版坐标对。

loc : [13.01111, 51.01111]

集合应该有一个索引(分别是 2dsphere 或 2d)来有效地处理查询。

我很确定 EVE 有一个内置的 geoWithin 运算符。它只是不起作用,因为您正在查询无效的位置格式。

于 2014-03-10T17:29:52.487 回答