$sort(数组排序,更新)

最后更新:2026-10-09

$sort(数组排序,更新)

$sort 作为更新修饰符,在 $push 后对数组元素排序。`{ $push: { scores: { $each: [85], $sort: -1 } } }` 降序排列。可与 $slice 组合:先排序再截取,实现保留 Top N。仅用于数组更新修饰符场景,与查询排序 sort() 不同。

分类更新修饰器
MongoDB 版本1.0+
示例语言mongosh (Shell)

📝 语法

{ $push: { <数组字段>: { $each: [ <值> ], $sort: <1 或 -1> } } }

⚙️ 参数

数组字段要排序的数组字段名。
排序方向1 升序,-1 降序。

返回值:更新结果文档

▶ 示例

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

// $sort:追加后按降序排序
// 1 升序,-1 降序
db.rankings.updateOne(
  { _id: 1 },
  { $push: { scores: { $each: [85], $sort: -1 } } }
)

// 与 $slice 组合:保留 Top 3
db.rankings.updateOne(
  { _id: 1 },
  { $push: { scores: { $each: [85], $sort: -1, $slice: 3 } } }
)

运行结果:

// scores 追加后降序排列;第二个示例再截断只留前 3 名

📌 注意事项

📚 相关教程

❓ 常见问题

Q更新里的 $sort 和查询的 sort() 区别?
A更新 $sort 排序的是数组元素本身;sort() 排序的是查询返回的文档。
Q$sort 和 $slice 怎么组合?
A$push: { $each: [...], $sort: -1, $slice: 10 },先排序再截断。
Q能按嵌套字段排序吗?
A能,$sort 支持 { field: 1 } 对象形式。
Web-Tutorial.com

Web-Tutorial 技术团队

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

100%

🙏 帮我们做得更好

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

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