定义
返回连接两个或多个数组的单个大量。$concatArrays 可用作聚合累加器或大量操作符。
聚合累加器
$concatArrays 在这些阶段可用作累加器:
语法
当用作聚合累加器时,$concatArrays 具有以下语法:
{ $concatArrays: "<array field>" } 
行为
为 null 或解析为 null 的参数包含在结果中。结果不包含引用缺失字段的参数。
例子
使用以下文档创建名为 sales 的集合:
db.sales.insertMany( [    {      _id: 1,      items: [ "laptop", "tablet" ],      location: "NYC"    },    {      _id: 2,      items: [ "phone", "tablet" ],      location: "NYC"    },    {      _id: 3,      location: "NYC"    },    {      _id: 4,      items: [ "desktop", { "accessories": [ "mouse", "keyboard"] } ],      location: "NYC"    } ] ) 
此示例展示了如何将 $concatArrays 用作累加器。此示例在对 location字段进行分组时合并了所有 items 数组的元素:
db.sales.aggregate( [    {       $group: {          _id: "$location",          array: { "$concatArrays": "$items" }       }    } ] ) 
操作返回以下结果:
[    {       "_id": "NYC",       "array": [           "laptop", "tablet", "phone", "tablet", "desktop",           { "accessories": [ "mouse", "keyboard"] }       ]    } ] 
数组操作符
语法
作为数组操作符使用时,$concatArrays 的语法如下:
{ $concatArrays: [ <array1>, <array2>, ... ] } 
行为
<array> 表达式可以是任何有效的表达式,只要它们解析为数组即可。有关表达式的更多信息,请参阅表达式。
如果任何参数解析为 null 值或引用了缺失的字段,则 $concatArrays 会返回 null。
| 例子 | 结果 | |||||
|---|---|---|---|---|---|---|
|  |  | |||||
|  |  | 
例子
使用以下文档创建名为 warehouses 的集合:
db.warehouses.insertMany( [    { _id : 1, instock: [ "chocolate" ], ordered: [ "butter", "apples" ] },    { _id : 2, instock: [ "apples", "pudding", "pie" ] },    { _id : 3, instock: [ "pears", "pecans" ], ordered: [ "cherries" ] },    { _id : 4, instock: [ "ice cream" ], ordered: [ ] } ] ) 
以下示例会将 instock 与 ordered 数组进行连接:
db.warehouses.aggregate( [    { $project: { items: { $concatArrays: [ "$instock", "$ordered" ] } } } ] ) 
操作返回以下结果:
[    { _id : 1, items : [ "chocolate", "butter", "apples" ] },    { _id : 2, items : null },    { _id : 3, items : [ "pears", "pecans", "cherries" ] },    { _id : 4, items : [ "ice cream" ] } ] 
限制
$concatArrays 仅支持数组和解析为大量的表达式。