我的文件包含位置列表"框" (方形区域)。每个方框由2个点(左下或西南,右上或东北)表示。
文件,例如:
{
locations: [
[[bottom,left],[top,right]],
[[bottom,left],[top,right]],
[[bottom,left],[top,right]]
]
}
我对这些边界点使用2d索引。
我的输入是一个特定的位置点[x,y],我想获取所有列在该列中的一个框的文档。
我可以使用geospatial operator吗? 我该如何撰写此查询?
答案 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制图应用轻松传输和消化。