$near
¶指定地理空间查询从最近到最远返回文档的点。该$near
运营商可以指定一个以GeoJSON点或传统的坐标点。
$near
需要地理空间索引:
要指定GeoJSON点,$near
运算符需要2dsphere索引,并具有以下语法:
如果指定纬度和经度坐标,请先列出经度,然后再列出 纬度:
-180
和之间180
,包括两者之间。-90
和之间90
,包括在内。指定GeoJSON点时,您可以使用可选参数
$minDistance
和$maxDistance
规范来限制$near
以米为单位的距离的结果:
$minDistance
将结果限制为距中心点至少指定距离的那些文档。$maxDistance
将结果限制为距中心点最多指定距离的那些文档。要使用传统坐标指定点,$near
需要2d索引并具有以下语法:
指定旧式坐标时,可以使用可选的
$maxDistance
规范来限制$near
结果的弧度距离。$maxDistance
将结果限制为距中心点最多指定距离的那些文档。
从MongoDB 4.0开始,分片$near
集合支持查询。
在早期的MongoDB版本中,分片$near
集合不支持查询。相反,对于分片群集,必须使用$geoNear
聚合阶段或geoNear
命令(在MongoDB 4.0及更低版本中可用)。
重要
如果指定纬度和经度坐标,请先列出经度,然后再列出 纬度:
-180
和之间180
,包括两者之间。-90
和之间90
,包括在内。考虑places
具有2dsphere
索引的集合。
以下示例返回距指定的GeoJSON点至少1000
几米,最多5000
几米(从最近到最远排序)的文档:
重要
如果指定纬度和经度坐标,请先列出经度,然后再列出 纬度:
-180
和之间180
,包括两者之间。-90
和之间90
,包括在内。考虑legacy2d
具有2d
索引的集合。
以下示例返回0.10
从指定的旧式坐标对到最大弧度的文档,从最接近到最远排序: