Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 按到给定点的距离对MongoDB文档进行排序_Ruby On Rails_Mongodb - Fatal编程技术网

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

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:

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

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

要查询索引,请执行以下操作:

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)-

默认情况下,geonear查询应该做到这一点