Mongodb地理空间索引

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]}}});

  

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

原文地址:https://www.cnblogs.com/kuugachen/p/4568989.html