$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 }