Mongodb地理定位边界搜索/查询

时间:2014-05-19 10:05:57

标签: mongodb geolocation geospatial mongodb-query geojson

我的文件包含位置列表"框" (方形区域)。每个方框由2个点(左下或西南,右上或东北)表示。

文件,例如:

{
   locations: [
        [[bottom,left],[top,right]],
        [[bottom,left],[top,right]],
        [[bottom,left],[top,right]]
   ]
}

我对这些边界点使用2d索引。

我的输入是一个特定的位置点[x,y],我想获取所有列在该列中的一个框的文档。

我可以使用geospatial operator吗? 我该如何撰写此查询?

1 个答案:

答案 0 :(得分:2)

您可以使用框操作符,请参阅: http://docs.mongodb.org/manual/reference/operator/query/box/#op._S_box以下示例直接来自该页面:

db.places.find( { loc : { $geoWithin : { $box :
                                      [ [ 0 , 0 ] ,
                                        [ 100 , 100 ] ] } } } )

值得注意的是,2d索引被认为是遗留的。如果你可以转换为使用GeoJSON和2dsphere索引,那么你可以使用$ geoWithin运算符:参见

http://docs.mongodb.org/manual/reference/operator/query/geoWithin/#op._S_geoWithin

GeoJSON还有许多其他好处,尤其是它可以通过OpenLayers或Leaflet等Web制图应用轻松传输和消化。