MongoDB地理空间查询
利用地理空间索引和查询实现位置邻近搜索、范围查询等功能。 · 难度:入门 · +15XP
地理空间数据
MongoDB 支持 GeoJSON 对象格式,可以存储点、线、多边形等地理数据。通过 2dsphere 索引实现高效的空间查询。
GeoJSON 格式
{ "type": "Point", "coordinates": [经度, 纬度] }
{ "type": "Polygon", "coordinates": [[ [lng1,lat1], [lng2,lat2], ... ]] }创建 2dsphere 索引
db.places.createIndex({ location: '2dsphere' });常用查询
$near:按距离排序,返回最近的点$geoWithin:查找位于多边形内的点$geoIntersects:查找与几何相交的文档
示例:查找附近咖啡馆
db.places.find({
location: {
$near: {
$geometry: { type: 'Point', coordinates: [116.397, 39.907] },
$maxDistance: 1000 // 单位米
}
}
}).limit(5);表格:地理操作符
| 操作符 | 说明 |
|---|---|
| $near | 返回最近的点(需索引) |
| $geoWithin | 查找位于区域内的点 |
| $geoIntersects | 查找与指定区域相交的几何 |
练习提示: 创建一个包含若干地标(如故宫、天安门)的集合,查询距离天安门 5km 内的所有地标。