用于maxdistance和MongoDB的单位?

时间:2011-10-20 14:46:58

标签: mongodb geospatial

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

db.places.find({ loc : { $near : [50,50] , $maxDistance : 5 }})

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

我完全被困在这里。

3 个答案:

答案 0 :(得分:67)

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

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

到你的问题

  

如果我在a中搜索文档,我将设置为maxdistance   半径1公里?

你可以用这个

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

我已经回答了如何使用mongo geospatial features here in detail。你可以看看

答案 1 :(得分:16)

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

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

答案 2 :(得分:0)

在最新版本中,我正在使用Spring和Mongo 4.0.5。重要的是索引类型和位置数据类型。我正在使用2dsphere,org.springframework.data.mongodb.core.geo.GeoJsonPoint 稍后,它会以几何单位(以米为单位)生成对应的mongo查询。

{ "location" : { "$nearSphere" : { "$geometry" : { "type" : "Point", "coordinates" : [18.341772, 43.834183] }, "$maxDistance" : 331.0 }