2

我有一个 MongoDB 集合。集合中的每个文档都有 x,y 坐标,表示网格上的位置。给定一个点 (x',y') 我想通过欧几里得距离检索其位置最接近 (x',y') 的前 k 个文档。我正在使用 Rails 应用程序中的 MongoDB。如果可能的话,我想在数据库上进行计算。我该怎么做?

4

1 回答 1

1

如果将坐标存储为数组 [x, y],则只需在该字段上创建一个地理空间索引(“2d”)。

查询索引:

db.runCommand({geoNear: <collection>, near: [x, y], limit: k})

如果您使用的是 MongoDB 2.4,首选方法是使用 GeoJSON 格式(即 {type: "Point", coordinates: [x, y]})和 "2dsphere" 索引,但也支持旧格式。

查询索引:

db.runCommand({geoNear: <collection>, near: {type: "Point", coordinates:[x, y]}, limit: k})

geoNear 命令返回按距离排序的结果。

这是文档:

于 2013-08-26T15:19:59.270 回答