$near(按距离查询并排序)

最后更新:2026-10-09

$near(按距离查询并排序)

$near 按与指定点的距离从近到远返回地理位置文档,结果自动按距离升序。`{ loc: { $near: { $geometry: { type: 'Point', coordinates: [lng, lat] }, $maxDistance: 1000 } } }`。必须使用 2dsphere 或 2d 索引,同一查询不能与其他 $near 或 $nearSphere 组合。

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

📝 语法

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

⚙️ 参数

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

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

▶ 示例

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

// $near:找离坐标 1000 米内的门店
// 需要 2dsphere 索引
db.stores.find({
  loc: { $near: {
    $geometry: { type: 'Point', coordinates: [-73.97, 40.75] },
    $maxDistance: 1000
  } }
})

运行结果:

// 返回 1000 米内的门店,按距离从近到远排序

📌 注意事项

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

📚 相关教程

❓ 常见问题

Q$near 结果自带排序吗?
A自带,按距离从近到远,无需再 sort。
Q$near 必须建索引吗?
A必须,2dsphere 或 2d 索引,否则报错。
Q$near 和 $geoWithin 怎么选?
A需要距离排序选 $near;只要判断在区域内选 $geoWithin。
Web-Tutorial.com

Web-Tutorial 技术团队

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

100%

🙏 帮我们做得更好

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

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