在Mongodb种,想要运用它的地理空间检索,必须给相应字段建立索引,主要有2d、2dsphere这两种索引,
建立的语法分别为:
db.集合名.createIndex({"字段1": "2d"})
db.集合名.createIndex({"字段2": "2dsphere"})
$near、$nearSphere是Mongodb中用来获取某一基准点的邻近点、并且由近至远排好序的操作。他们都支持对2d索引和2dsphere索引的操作,但有如下需要注意的点:
●$near检索时,若标识坐标的字段为2d索引,它传入的基准点的格式必须是Double数组型的;若标识坐标的字段为2dsphere索引,传入的基准点的格式则必须为GeoJSON型。
●对于$nearSphere,若作用在2d索引上,则要求该2d索引必须是建立在集合中GeoJSON型数据的coordinates字段上,且传入的基准点的格式必须是Double数组型的;若作用在2dsphere索引上,则对基准点的格式无要求。
●传入的基准点格式为Double数组时,$minDistance、$maxDistance的计算都是以弧度为单位的;
传入的基准点格式为GeoJSON时,计算是以距离:米为单位的。
$near、$nearSphere虽然能够检索出邻近点,并且由近至远排好序,但是这两个操作是不返回距离的。
返回距离需要用到聚合检索中的$geoNear,其使用方法为:
db.集合名.aggregate([{
$ge