警告
对于球形查询,请使用2dsphere
索引结果。
将2d
索引用于球形查询可能会导致错误的结果,例如将2d
索引用于环绕两极的球形查询。
所述2d
索引支持在查询上的欧几里得平面计算距离(平坦表面)。索引还支持以下查询运算符和命令,这些运算符和命令使用球形几何体计算距离:
注意
虽然2d
索引支持使用球面距离的基本查询,但是2dsphere
如果您的数据主要是经度和纬度,请考虑移至索引。
$nearSphere
$centerSphere
$near
$geoNear
带有选择的流水线级spherical: true
重要
前述操作使用弧度作为距离。其他球形查询运算符则没有,例如$geoWithin
。
为了使球形查询运算符正常运行,必须将距离转换为弧度,并将弧度转换为应用程序使用的距离单位。
转换:
地球的赤道半径约为3,963.2
英里或6,378.1
公里。
以下查询将从places
中心所描述
的半径为英里的圆圈中的集合中返回文档:[ -74, 40.74 ]
100
注意
如果指定纬度和经度坐标,请先列出经度,然后再列出 纬度:
-180
和之间180
,包括两者之间。-90
和之间90
,包括在内。