按照到给定点的距离对MongoDB文档进行排序

时间:2013-08-26 14:26:15

标签: ruby-on-rails mongodb

我有一个MongoDB集合。集合中的每个文档都有x,y个协调,表示网格上的位置。给定一个点(x',y')我想检索它们的位置最靠近(x',y')欧几里德距离的前k个文档。我在rails应用程序中使用MongoDB。如果可能,我想在数据库上进行计算。我该怎么办?

1 个答案:

答案 0 :(得分:1)

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

查询索引:

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

如果您使用的是MongoDB 2.4,首选方法是使用GeoJSON格式(即{type:“Point”,坐标:[x,y]})和“2dsphere”索引,但传统格式也是支撑。

查询索引:

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

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

以下是文档: