$sort(排序)

最后更新:2026-10-09

$sort(排序)

$sort 按指定字段对管道中的文档排序:1 升序、-1 降序,支持多字段组合排序。排序通常放在管道靠后位置,因为中间阶段可能改变文档顺序;若想借助索引加速排序,应把 $match 前置。对大量文档排序会占用较多内存,超过 100MB 内存限制会被拒绝,可开启 allowDiskUse 用磁盘完成排序。

分类核心阶段
MongoDB 版本1.0+
示例语言mongosh (Shell)

📝 语法

{ $sort: { <字段1>: <1 或 -1>, <字段2>: <1 或 -1> } }

⚙️ 参数

排序键字段名映射为 1(升序)或 -1(降序),多个字段按书写顺序依次比较。

返回值:排序后的文档流

▶ 示例

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

// $sort:分数降序,同名按姓名升序
db.scores.aggregate([
  { $sort: { score: -1, name: 1 } }
])

运行结果:

{ "name": "Alice", "score": 98 }
{ "name": "Bob", "score": 92 }

📌 注意事项

📚 相关教程

❓ 常见问题

Q$sort 如何实现多字段排序?
A按字段书写顺序依次比较:先按第一个字段排序,值相等再按第二个字段。
Q$sort 会利用索引吗?
A当排序键与索引匹配且作为首阶段或紧跟 $match 时,可借助索引避免内存排序。
Q$sort 报内存超限怎么办?
A在 aggregate 选项里加 allowDiskUse: true,允许使用磁盘临时文件完成排序。
Web-Tutorial.com

Web-Tutorial 技术团队

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

100%

🙏 帮我们做得更好

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

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