打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
MongoDB地理空间(2d)索引创建与查询

LBS(Location Based Services)定位服务,即根据用户位置查询用户附近相关信息,这一功能在很多应用上都有所使用。基于用户位置进行查询时,需要提供用户位置的经纬度。为了提高查询速度,MongoDB为坐标平面查询提供了专门的索引,称作地理空间(2d)索引。

  1. 创建地理空间索引

  2. 使用地理空间索引查询

1. 创建地理空间索引

地理空间索引又称为2d索引。创建其它形式的索引,我们会按升序或降序(1-1)的形式创建索引,不同于其它形式的索引,创建地理空间索引要指定的值为:2d。语法结构如下:

db.<collection>.createIndex({  <location field> : "2d" ,   <additional field> : <value> } ,  { <index-specification options>})
  • location field:要创建2d地理空间索引的字段(键)

  • additional field:附加字段(键)

  • index-specification options:索引选项

index-specification options是一个包含以下可选值的子文档:

{ min : <lower bound>, max : <upper bound>, bits : <bit precision> }
  • min bound:{number},最低范围,默认-180.0

  • min bound:{number},最高范围,默认180.0

  • bit precision:{integer},存储数据Geohash值精度,取值:1〜32,默认26

地理空间计算本质上是二维数据计算,创建索引地理空间索引时,索引键的值必须是一对值:一个包含两个数值的数组或包含两个键的内嵌文档(内嵌文档键的名称不重要)。

以下几种健值形式,都可以创建地理空间索引:

// 数组{"gps": [40, 120]}// 包含两个键的内嵌文档{"gps": { "x":40, "y":120}}{"gps": { "latitude":40, "longitude":120}}

我们可以对上面的"gps"健创建地理空间索引:

db.userlocation.ensureIndex({"gps" : "2d"}, {"min":-1000, "max":1000});  

这样我们就创建了地理空间索引值范围为-1000〜1000的索引。

2. 使用地理空间索引查询

2.1 $near接近点查询

通过$near关键字,可以根据一个指定的平面点,按距离排序返回查询结果:

db.<collection>.find({   <location field> :{     $near : [ <x>, <y>],    $maxDistance : <distance in meters<,    $mixDistance : <distance in meters<  }})
  • $near表示要查询的中心点

  • $maxDistance距中心点的最大距离

  • $mixDistance距中心点的最小距离

如,查询距离坐标点(40,120),10公里以内的数据:

db.userlocation.find({   gps : {     $near : [40, 120],    $maxDistance : 10  }})

2.2 $geoWithin指定形状查询

MongoDB不仅可以按坐标点查询,还可以在查询指定形状内的文档。按形状查询使用$geoWithin(在v2.4之前使用$within):

db.<collection<.find({   <location field> :{     $geoWithin : { $box|$polygon|$center : <coordinates>}   }})

在指定形状查询中,$box$polygon$center分别表示按矩形、五边形、圆形进行查询。

如,查询坐标点为(40,120),半径为10以内的文档:

db.userlocation.find({   gps : {     $geoWithin : {      $center:[[40, 120], 10]    }  }})

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
深入浅出Symfony2
Spring认证中国教育管理中心-Spring Data MongoDB教程四
LBS | Simple
MongoDB Windows下的安装与部署 (二)
学习MongoDB 七: MongoDB索引(索引基本操作)(一)
MongoDB索引(7)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服