Mongodb地理空间索引

1. LBS地理空间索引

关于LBS相关项目,一般存储每一个地点的经纬度的坐标, 假设要查询附近的场所,则须要建立索引来提升查询效率。

Mongodb专门针对这样的查询建立了地理空间索引。

2d和2dsphere索引。

2. 创建索引

建立places集合,来存放地点,

loc字段用来存放地区数据GeoJSON Point。

db.places.insert(
   {
      loc : { type: "Point", coordinates: [ -73.97, 40.77 ] },
      name: "Central Park",
      category : "Parks"
   }
)

db.places.insert(
   {
      loc : { type: "Point", coordinates: [ -73.88, 40.78 ] },
      name: "La Guardia Airport",
      category : "Airport"
   }
)

建立索引

db.places.ensureIndex( { loc : "2dsphere" } )

參数不是1或-1,为2dsphere。

还能够建立组合索引。

db.places.ensureIndex( { loc : "2dsphere" , category : -1, name: 1 } )

3. 查询

$geometry表示查询的几何图片.

3.1 查询多边形范围的值

type表示类型:polygon 多边形

db.places.find( { loc :
                  { $geoWithin :
                    { $geometry :
                      { type : "Polygon" ,
                        coordinates : [ [
                                          [ 0 , 0 ] ,
                                          [ 3 , 6 ] ,
                                          [ 6 , 1 ] ,
                                          [ 0 , 0 ]
                                        ] ]
                } } } } )

3.2 查询附近的值

使用$near来查询附近的地点。

 db.places.find( { loc :
                         { $near :
                           { $geometry :
                              { type : "Point" ,
                                coordinates : [ <longitude> , <latitude> ] } ,
                             $maxDistance : <distance in meters>
                      } } } )

3.3 查询圆形内的值

查询圆时,须要指定圆心, 半径。

db.places.find( { loc :
                  { $geoWithin :
                    { $centerSphere :
                       [ [ -88 , 30 ] , 10 ]
                } } } )

[-88, 30] 为经纬度,  10为半径。

地址:http://blog.csdn.net/yonggang7/article/details/28109463

时间: 2024-10-09 09:22:11

Mongodb地理空间索引的相关文章

mongoDb地理空间索引和查询

一.MongoDb介绍(http://docs.mongoing.com/manual/applications/geospatial-indexes.html) MongoDB提供了一系列的索引和查询机制来处理地理空间信息.这一节会介绍MongoDB的地理索引特性.您可以阅读 地理索引教程 来了解关于MongoDB中地理查询的完整示例. 表面 在您存储地理数据和编写查询条件前,首先,您必须选择表面类型,这将被用在计算中.您所选择的类型将会影响您的数据如何被存储,建立的索引的类型,以及您的查询的

MongoDB 学习笔记之 地理空间索引入门

地理空间索引: 地理空间索引,可用于处理基于地理位置的查询. Point:用于指定所在的具体位置,我们以restaurants为例: db.restaurants.insert({name: "Citi", loc: {type: "Point", coordinates: [52.37, 5.21]}}) db.restaurants.insert({name: "SAP", loc: {type: "Point", coo

mongodb的地理空间索引常见的问题

创建地理空间索引注意事项 创建地理空间索引失败,提示错误信息如下 > db.places.ensureIndex({"loc":"2dsphere"}){"createdCollectionAutomatically" : false,"numIndexesBefore" : 1,"ok" : 0,"errmsg" : "Can't extract geo keys fr

MongoDB系列五(地理空间索引与查询).

一.经纬度表示方式 MongoDB 中对经纬度的存储有着自己的一套规范(主要是为了可以在该字段上建立地理空间索引).包括两种方式,分别是 Legacy Coordinate Pairs (这个词实在不知道怎么翻译...) 和  GeoJSON . Legacy Coordinate Pairs Legacy Coordinate Pairs 又有两种方式可以存储经纬度,可以使用数组(首选)或嵌入式文档. 数组: <field>: [<longitude>, <latitude

mongodb的地理空间索引如何在solr中体现

"$near"是唯一一个会对查询结果进行自动排序的地理空间操作符 "$near"的返回结果是按照距离由近及远排序的.其他排序条件不会生效. 这种按照地理位置远近查询怎么在solr排序中体现?

空间索引 - 各数据库空间索引使用报告

h1,h2,h3,h4,h5,h6,p,blockquote { margin: 0; padding: 0 } body { font-family: "Helvetica Neue", Helvetica, "Hiragino Sans GB", Arial, sans-serif; font-size: 13px; line-height: 18px; color: #737373; background-color: white; margin: 10px

基于mongodb的地理检索实现

使用mongoDB不是很多,记得以前做"家长助手"的时候,使用过一点.只是在去年做"派单系统"的时候,又再一次使用mongoDB. 在这里先简单介绍一下派单系统,派单系统在云足疗(O2O,上门足疗)里一个专门负责订单派送,提高订单完成效率的一个系统.主要是当一个来了之后,会根据订单的服务项目.服务时间和服务地点,快速找到最合适最优秀的技师,返回给用户.由于上门足疗特殊行业的要求,不能给订单指定技师直接下单.而是将筛选的一些优秀的技师返回给用户,让用户自己去选择指派给

mongoDB索引相关命令总结

一.在集合中文档的某个键上面建立索引: 1.我们知道如果索引使用的得当,会大幅提升查询速度,而如果使用不当有可能会使整个操作性能下降所以在建立索引的时候要考虑如下几点: (1).会做什么样的查询,哪些键需要建立索引 (2).每个键的索引方向是怎么样的 (3).如何应对扩展,怎么排序键的方向,使更多常用的数据保存在内存中 2.这里注意一下,建立索引的时候可以使用 1,-1 建立不同方向的索引 3.使用ensureIndex() 在指定的键上创建索引 4.建立普通索引:使用 ensureIndex(

MongoDB数据库索引

前面的话 索引通常能够极大的提高查询的效率,如果没有索引,MongoDB在读取数据时必须扫描集合中的每个文件并选取那些符合查询条件的记录.这种扫描全集合的查询效率是非常低的,特别在处理大量的数据时,查询可以要花费几十秒甚至几分钟,这对网站的性能是非常致命的.本文将详细介绍MongoDB数据库索引 引入 索引能够提高查询效率,如何体现呢?接下来使用性能分析函数explain()来进行分析说明 首先,插入10万条数据 接着,不创建索引,来寻找time范围在100和200之间的文档 由图中所知,tot