MongoDB地理空间索引

kangzai0 2015-06-12

1、索引:

建立索引既耗时也费力,还需要消耗很多资源。使用{"bakckground":true}选项可以使这个过程在后台完成,同时正常处理请求。如果不包括background

这个选项,数据库会阻塞建立索引期间的所有请求。阻塞的做法会让索引建立得更快,同时也意味着应用在此期间不能应答。即便在后台进行也会对正常操作有些影响。

2、地理空间索引:

通俗说就是找到离当前位置最近的N个场所。默认情况下,地理空间索引假设值的范围是-180~180。要是想使用其他值,可以通过ensureIndex的选项来指定最大最小值:

>db.star.trek.ensureIndex({"light-years":"2d"},{"min":-1000,"max":1000});

这样就创建了一个2000光年的空间索引。

对于"$near"的例子下面列举一个:

>db.map.find({"gps":{"$near":[40,-73]}}).limit(10)

也可以使用geoNear来。

>db.runCommand({geoNear:"map",near:[40,-70],num:10});

geoNear会返回每个文档到查询点的距离。这个距离是以你插入的数据为单位的,如果按照经纬度的角度插入,则距离就是经纬度。

还可以指定形状内的文档。

例如$center来找到圆形内部的所有站点

>db.map.find({"gps":{"within":{"center":[12,34],5]}}});

MongoDB地理空间索引

3、mongo的地理空间索引假设索引内容是在一个平面上的。这就意味着对于球体,比如地球,它并不是十分精确,尤其是在极地区域。具体来说,两条经线之间纬线的长度在赤道和在育空地区是不一样的,后者要短很多。

MongoDB 的详细介绍:请点这里
MongoDB 的下载地址:请点这里

相关推荐