Ruby on rails 按到给定点的距离对MongoDB文档进行排序
我有一个MongoDB收藏。集合中的每个文档都有x,y坐标,表示网格上的一个位置。给定一个点(x',y'),我想通过欧几里德距离检索其位置最接近(x',y')的前k个文档。我正在使用rails应用程序中的MongoDB。如果可能的话,我想对DB进行计算。怎么做?如果将坐标存储为数组[x,y],则只需在该字段上创建地理空间索引(“2d”) 要查询索引,请执行以下操作:Ruby on rails 按到给定点的距离对MongoDB文档进行排序,ruby-on-rails,mongodb,Ruby On Rails,Mongodb,我有一个MongoDB收藏。集合中的每个文档都有x,y坐标,表示网格上的一个位置。给定一个点(x',y'),我想通过欧几里德距离检索其位置最接近(x',y')的前k个文档。我正在使用rails应用程序中的MongoDB。如果可能的话,我想对DB进行计算。怎么做?如果将坐标存储为数组[x,y],则只需在该字段上创建地理空间索引(“2d”) 要查询索引,请执行以下操作: db.runCommand({geoNear: <collection>, near: [x, y], limit:
db.runCommand({geoNear: <collection>, near: [x, y], limit: k})
db.runCommand({geoNear: <collection>, near: {type: "Point", coordinates:[x, y]}, limit: k})
db.runCommand({geoNear:,near:[x,y],limit:k})
如果您使用的是MongoDB 2.4,首选的方法是使用GeoJSON格式(即{type:“Point”,坐标:[x,y]})和“2dsphere”索引,但也支持传统格式
要查询索引,请执行以下操作:
db.runCommand({geoNear: <collection>, near: [x, y], limit: k})
db.runCommand({geoNear: <collection>, near: {type: "Point", coordinates:[x, y]}, limit: k})
db.runCommand({geoNear:,near:{type:“Point”,坐标:[x,y]},极限:k})
geoNear命令返回按距离排序的结果
以下是文件:
- 2d索引-
- 2球体指数(2.4)-