MongoDB聚合运算符:$sortArray

MongoDB聚合运算符:$sortArray


$sortArray聚合运算符根据指定的排序规则对数组元素进行排序。

语法

$sortArray: {
   
   
   input: <array>,
   sortBy: <sort spec>
}
  • input:为可解析为数组的表达式,如果表达式字段缺失、为null或undefined,则返回null,如果表达式为其他非数组的值,则返回错误。
  • sortBy:文档类型,用于指定排序方式。

使用

  • $sortArray 表达式根据 sortBy 规范对输入数组进行排序。
  • $sortArray 的语法和语义与通过 $sort 修改的 $push 操作中的行为相同。

根据文档字段进行排序

如果数组元素是文档,则可以按文档字段排序,指定字段名称和排序方向:升序 (1) 或降序 (-1)。

{
   
   
   input: <array-of-documents>,
   sortBy: {
   
    <document-field>: <sort-direction> }
}

根据值排序

要按值对整个数组进行排序,或按非文档的数组元素进行排序,需要指定输入数组并在 sortBy 参数中指定 1 表示升序排序,或指定 -1 表示降序排序。

{
   
   
   input: <array-of-documents>,
   sortBy: <sort-direction>
}

注意事项

  • 对于排序的键值,不会进行隐式数组遍历。
  • 不支持位置运算符,像"values.1"这样的字段名称表示 value 数组中名为"1"的子字段,而不是引用数组中的第1个元素。
  • 当整个数组排序时,排序按字典顺序,与聚合 $sort 阶段的行为有所不同。
  • 当数组按字段排序时,任何不具有指定字段的文档或标量会被平均排序,也就是结果的排序顺序不确定。
  • null和缺失值按照同等顺序排序。
  • $sortArray的排序是不稳定的,不应依赖其排序算法的稳定性。

举例

使用下面的脚本创建team集合:

db.engineers.insertOne(
   {
   
   
      "team":
         [
            {
   
   
              "name": "pat",
              "age": 30,
              "address": {
   
    "street": "12 Baker St", "city": "London" }
            },
            {
   
   
              "name": "dallas",
              "age": 36,
              "address": {
   
    "street": "12 Cowper St", "city": "Palo Alto" }
            },
            {
   
   
              "name": "charlie",
              "age": 42,
              "address": {
   
    "street": "12 French St", "city": "New Brunswick" }
            }
         
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

原子星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值