定义
返回连接两个或多个数组的单个大量。$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 仅支持数组和解析为大量的表达式。