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 }