我有一个包含位置“框”(方形区域)列表的文档。每个框由 2 个点表示(左下或西南、右上角或东北)。
文档,例如:
{
locations: [
[[bottom,left],[top,right]],
[[bottom,left],[top,right]],
[[bottom,left],[top,right]]
]
}
我正在使用2d这些边界点的索引。
我的输入是一个特定位置点 [x,y],我想获取列表中包含该点所在框的所有文档。
有没有geospatial operator我可以用它来做到这一点吗? 我该如何编写这个查询?
最佳答案
您可以使用框运算符,请参阅: http://docs.mongodb.org/manual/reference/operator/query/box/#op._S_box以下示例直接取自该页面:
db.places.find( { loc : { $geoWithin : { $box :
[ [ 0 , 0 ] ,
[ 100 , 100 ] ] } } } )
值得注意的是,二维索引被认为是遗留的。如果您可以转换为使用 GeoJSON 和 2dsphere 索引,那么您可以使用 $geoWithin 运算符:请参阅
http://docs.mongodb.org/manual/reference/operator/query/geoWithin/#op._S_geoWithin
GeoJSON 还有许多其他优点,其中最重要的是,它很容易被 OpenLayers 或 Leaflet 等 Web map 应用程序传输和消化。
关于Mongodb 地理位置边界搜索/查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23734942/