$reverseArray (aggregation)
Definition
New in version 3.4.
Accepts an array expression as an argument and returns an array with theelements in reverse order.
$reverseArray
has the following operatorexpression syntax:
- { $reverseArray: <array expression> }
The argument can be any valid expression as long as it resolves to an array.
Behavior
If the argument resolves to a value of null
or refers to amissing field, $reverseArray
returns null
.
If the argument does not resolve to an array or null
nor refersto a missing field, $reverseArray
returns an error.
$reverseArray
returns an empty array when the argument is an empty array.
If the argument contains subarrays, $reverseArray
only operates on the top level array elements and will not reverse the contents of subarrays.
Example [1] | Results |
---|---|
| [ 3, 2, 1 ] |
| [ "baz", "bar" ] |
| null |
| [ ] |
| [ [ 4, 5, 6 ], [ 1, 2, 3 ] ] |
[1] | The examples in the table take a literal argument. To avoid parsingambiguity if the literal argument is an array, you must wrap theliteral array in a $literal expression or keep theouter array that designates the argument list (e.g. [ [ 1, 2, 3 ]] ) to pass in the literal array [1, 2, 3] . |
Example
A collection named users
contains the following documents:
- { "_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" }
The following example returns an array containing the elements ofthe favorites
array in reverse order:
- db.users.aggregate([
- {
- $project:
- {
- name: 1,
- reverseFavorites: { $reverseArray: "$favorites" }
- }
- }
- ])
The operation returns the following results:
- { "_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 }