$nearSphere(球面距离查询)

最后更新:2026-10-09

$nearSphere(球面距离查询)

$nearSphere 按球面距离(地球曲面上的大圆距离)从近到远返回地理位置文档。`{ loc: { $nearSphere: { $geometry: { type: 'Point', coordinates: [lng, lat] }, $maxDistance: 5000 } } }`。与 $near 的区别:$nearSphere 始终按球面距离计算且单位为米;$near 在 2d 索引下用平面距离。需 2dsphere 索引。

分类地理空间
MongoDB 版本2.4+
示例语言mongosh (Shell)

📝 语法

{ <位置字段>: { $nearSphere: { $geometry: <Point>, $maxDistance: <米> } } }

⚙️ 参数

位置字段存储坐标的字段名。
Point几何GeoJSON Point,坐标为 [经度, 纬度]。
maxDistance可选,最大球面距离(米)。

返回值:匹配的文档游标(按球面距离升序)

▶ 示例

请在本地安装的 mongosh 中执行以下命令(需已启动 mongod):

// $nearSphere:5 公里内的门店(球面距离)
// 经纬度顺序为 [经度, 纬度]
db.stores.find({
  loc: { $nearSphere: {
    $geometry: { type: 'Point', coordinates: [-73.97, 40.75] },
    $maxDistance: 5000
  } }
})

运行结果:

// 返回 5 公里内的门店,按球面距离升序

📌 注意事项

更多实战案例即将上线,敬请期待。

📚 相关教程

❓ 常见问题

Q$nearSphere 和 $near 的区别?
A$nearSphere 始终用球面距离(米);$near 在 2d 索引下用平面距离。
Q经纬度顺序是?
AGeoJSON 规定 [经度, 纬度],写反了会差十万八千里。
Q能同时用 $near 和 $nearSphere 吗?
A不能,同一查询只能出现其中一个。
Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏