$reverseArray (聚合)
定义
$reverseArray
接受一个数组表达式作为参数,并返回一个元素顺序相反的数组。
{ $reverseArray: <array expression> } 参数可以是任何有效的表达式,只要它解析为数组即可。
行为
如果参数解析为 null
或引用一个缺失的字段,$reverseArray
返回 null
。
如果参数不是数组或 null
也未引用缺失的字段,$reverseArray
返回一个错误。
$reverseArray
在参数是一个空数组时返回一个空数组。
如果参数包含子数组,$reverseArray
仅操作顶层数组元素,不会反转子数组的内容。
示例 [1] | 结果 | |||
---|---|---|---|---|
| [ 3, 2, 1 ] | |||
| [ "baz", "bar" ] | |||
| null | |||
| [ ] | |||
| [ [ 4, 5, 6 ], [ 1, 2, 3 ] ] |
[1] | 表中的示例使用一个字面量参数。为了避免在字面量参数是数组时产生解析歧义,您必须将字面量数组包裹在一个 $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 }