MongoDB聚合运算符:$reverseArray

MongoDB聚合运算符:$reverseArray


$reverseArray聚合运算符接受数组表达式作为参数,并返回一个元素按相反顺序排列的数组。

语法

{ $reverseArray: <array expression> }

参数可以是任何可以解析为数组的表达式。

使用

  • 如果参数解析为 null 值或引用缺失字段,则 $reverseArray 返回 null
  • 如果参数未解析为数组或 null 也未引用缺失字段,则 $reverseArray 返回错误。
  • 当参数为空数组时,$reverseArray 返回空数组。
  • 如果参数包含子数组,则 $reverseArray 仅对顶级数组元素进行操作,而不会反转子数组的内容。

例如:

例子结果
{ $reverseArray: { $literal: [ 1, 2, 3 ] } }[ 3, 2, 1 ]
{ $reverseArray:{ $slice: [ [ "foo", "bar", "baz", "qux" ], 1, 2 ] } }}[ "baz", "ba]
{ $reverseArray: null }null
{ $reverseArray: { $literal: [ ] } }[ ]
{ $reverseArray: { $literal: [ [ 1, 2, 3 ], [ 4, 5, 6 ] ] } }[ [ 4, 5, 6 ], [ 1, 2, 3 ] ]

表中的示例使用了字面参数。如果字面参数是一个数组,为避免解析歧义,必须用 $literal 表达式封装字面数组,或保留指定参数列表的外层数组(例如 [ [ 1, 2, 3 ] ]),以传递字面数组 [1, 2, 3]

举例

users集合有下列文档:

{ "_id" : 1, "name" : "dave123", "favorites" : [ "chocolate", "cake", "butter", "apples" ] }
{ "_id" : 2, "name" : "li", "favorites" : [ "apples", "pudding", "pie" ] }
{ "_id" : 3, "name" : "ahn", "favorites" : [ ] }
{ "_id" : 4, "name" : "ty" }

下面的示例按相反顺序返回一个包含favorites数组元素的数组::

db.users.aggregate([
   {
     $project:
      {
         name: 1,
         reverseFavorites: { $reverseArray: "$favorites" }
      }
   }
])

操作返回下面的结果:

{ "_id" : 1, "name" : "dave123", "reverseFavorites" : [ "apples", "butter", "cake", "chocolate" ] }
{ "_id" : 2, "name" : "li", "reverseFavorites" : [ "pie", "pudding", "apples" ] }
{ "_id" : 3, "name" : "ahn", "reverseFavorites" : [ ] }
{ "_id" : 4, "name" : "ty", "reverseFavorites" : null }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

原子星

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

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

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

打赏作者

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

抵扣说明:

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

余额充值