$sortArray(数组内排序)

最后更新:2026-10-09

$sortArray(数组内排序)

$sortArray 对数组内部元素排序,MongoDB 5.2 新增。标量数组直接指定 1(升序)或 -1(降序);对象数组用 { 字段: 1/-1 } 指定排序键,也可用 [ [ '字段', 1 ] ] 数组形式支持多级排序。典型场景包括把评论按时间倒序、把商品按价格升序后再展示。它返回新数组,不修改原数据;sortBy 传空对象会报错。

分类数组
MongoDB 版本1.0+
示例语言mongosh (Shell)

📝 语法

{ $sortArray: { input: <数组>, sortBy: <排序规则> } }

⚙️ 参数

input要排序的数组。
sortBy排序规则:标量数组用 1/-1;对象数组用 { 字段: 1/-1 } 或 [ [ '字段', 1 ] ]。

返回值:排序后的新数组

▶ 示例

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

// $sortArray:商品按价格升序
db.orders.aggregate([
  { $project: {
      sorted: { $sortArray: { input: '$items', sortBy: { price: 1 } } }
  } }
])

运行结果:

{ '_id': 1, 'sorted': [ { 'sku': 'B', 'price': 5 }, { 'sku': 'A', 'price': 9 } ] }

📌 注意事项

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

📚 相关教程

❓ 常见问题

Q$sortArray 支持多字段排序吗?
A支持,用 [ [ '字段1', 1 ], [ '字段2', -1 ] ] 形式。
Q老版本 MongoDB 能用吗?
A5.2 才引入;旧版本可用 $unwind 展开、$sort 排序、$group 收回。
Q字段缺失的元素排哪里?
A排在数组末尾。
Web-Tutorial.com

Web-Tutorial 技术团队

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

100%

🙏 帮我们做得更好

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

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