用于maxdistance和MongoDB的单位?

Jon*_*ark 35 geospatial mongodb

我试图了解MongoDB和地理空间搜索.基本上我想要的是用户能够查询在距离用户当前位置的设定距离内拍摄的文档(图像).所以我用户正在搜索距离他所在地1公里范围内拍摄的所有图像我尝试使用下面的示例,但我不知道要设置什么作为最大距离值.

db.places.find({ loc : { $near : [50,50] , $maxDistance : 5 }})
Run Code Online (Sandbox Code Playgroud)

所以我的问题是如果我在1公里范围内搜索文件,我将设置为maxdistance?

我完全被困在这里.

Ram*_*Vel 67

要使用$near具有km范围的mongodb 查询,您需要将radius值转换为km.默认情况下,mongodb $ near接受$maxDistanceradius.

111.12使用km时转换距离(一度约为111.12公里),或者使用度数保持距离

你的问题

如果我在半径1公里范围内搜索文件,我该设置为maxdistance?

你可以用它

   db.places.find( { loc : { $near : [50,50] , $maxDistance : 1/111.12 } } )
Run Code Online (Sandbox Code Playgroud)

我已经在这里详细解答了如何使用mongo地理空间特征.你可以看看

  • $ near假设一个平坦地球的理想化模型,意味着纬度(y)和经度(x)的弧度代表相同的距离.所以你必须将半径转换为111或69以获得结果.但是$ nearSphere你需要将半径转换为(6371 km或3959英里)以使其工作...你可以阅读更多关于[这里](http ://www.mongodb.org/display/DOCS/Geospatial+Indexing#GeospatialIndexing-TheEarthisRoundbutMapsareFlat) (13认同)
  • 这里的单位在文档中提到.花了一段时间才找到这个... http://docs.mongodb.org/manual/reference/operator/maxDistance/感谢转换,@ RameshVel!这里更准确的转换:http://www.chemical-ecology.net/java/lat-long.htm显示111.11999965975954 km /度(我在米级工作,因此准确性很重要). (3认同)

Iva*_*tov 17

从MongoDB 2.4版开始,您可以直接以米为单位指定半径作为$ maxDistance的值,如下所示:

db.<collection>.find({loc: {$near : 
                               {$geometry : 
                                   {
                                    type: 'Point', 
                                    coordinates: [<longitude> , <latitude>]       
                                   }
                               }, 
                               $maxDistance: 10*100 
                           }
                     }); 
Run Code Online (Sandbox Code Playgroud)

  • 这取决于指数.如果索引是"2d",这将不起作用,因为2d索引假定为"弧度格式".另一方面,如果索引是"2dsphere",那么你是正确的.:-)文档:https://docs.mongodb.com/manual/reference/operator/query/near/#query-on-legacy-coordinates (4认同)