$nearSphere
¶指定地理空间查询从最近到最远返回文档的点。MongoDB $nearSphere
使用球形几何计算距离
。
$nearSphere
需要地理空间索引:
coordinates
该$nearSphere
运营商可以指定一个
以GeoJSON点或传统的坐标点。
要指定GeoJSON Point,请使用以下语法:
$minDistance
限制的结果,那些文档至少从中心点指定的距离。$maxDistance
适用于任何一个索引。要使用传统坐标指定点,请使用以下语法:
$minDistance
才可用。
将结果限制为距中心点至少指定距离的那些文档。$minDistance
$maxDistance
适用于任何一个索引。如果您将经度和纬度用于旧版坐标,请先指定经度,然后再指定纬度。
也可以看看
您不能将$nearSphere
需要特殊地理空间索引的运算符与需要另一个特殊索引的查询运算符或命令结合使用。例如,您不能$nearSphere
与$text
查询结合。
从MongoDB 4.0开始,分片$nearSphere
集合支持查询。
在早期的MongoDB版本中,分片$nearSphere
集合不支持查询。相反,对于分片群集,必须使用$geoNear
聚合阶段或geoNear
命令(在MongoDB 4.0及更低版本中可用)。
$nearSphere
按距离对文档进行排序。如果您还
sort()
为查询添加,则sort()
对匹配的文档重新排序,从而有效地覆盖已由进行的排序操作$nearSphere
。sort()
与地理空间查询一起使用
时,请考虑使用
$geoWithin
运算符(而不是对文档进行排序)代替
$nearSphere
。
考虑一个places
包含带有location
字段的文档
并具有2dsphere索引的集合。
然后,下面的示例返回其距离指定点location
至少为
1000
米且最多5000
为指定点(从最近到最远排序)的示例:
2d
索引¶考虑一个集合legacyPlaces
,该集合包含在location
字段中具有旧式坐标对的文档,并具有二维索引。
然后,以下示例返回从指定点location
到最大0.10
弧度(从最近到最远排序)的那些文档:
2dsphere
索引¶如果集合具有2dsphere
索引,则还可以指定可选$minDistance
规范。例如,下面的示例返回距指定点location
至少0.0004
弧度,从最近到最远排序的文档: