MongoDB $concatArrays 运算符介绍

在 MongoDB 的聚合管道中, $concatArrays 运算符用于将两个或多个数组合并成一个数组。

语法

$concatArrays 运算符的语法如下:

{  `$concatArrays` : [ <expression1>, <expression2>, ... ] }

其中,<expression1>, <expression2>, 是要合并的数组表达式。

使用场景

$concatArrays 运算符适用于需要合并多个数组的聚合操作。例如,可以将来自不同数据源的数组合并为一个数组。

示例

示例 1

下面的聚合管道将来自 sales 和 expenses 两个集合的数据合并为一个数组:

db.sales.aggregate([
   {
      $lookup:
         {
           from: "expenses",
           localField: "quarter",
           foreignField: "quarter",
           as: "expenses"
         }
   },
   {
      $project:
         {
           _id: 0,
           quarter: 1,
           sales: 1,
           expenses: "$expenses.amount"
         }
   },
   {
      $project:
         {
           _id: 0,
           data: {  `$concatArrays` : [ "$sales", "$expenses" ] }
         }
   }
])

运行上述聚合管道后,得到的结果如下所示:

{ "data" : [ 100, 200, 300, 50, 75, 100 ] }

示例 2

下面的聚合管道使用 $concatArrays 运算符将一个文档中的两个数组合并成一个数组:

db.collection.aggregate([
   {
      $project:
         {
            _id: 0,
            merged: {  `$concatArrays` : [ "$array1", "$array2" ] }
         }
   }
])

假设原始文档如下所示:

{ "array1" : [ 1, 2, 3 ], "array2" : [ 4, 5, 6 ] }

运行上述聚合管道后,得到的结果如下所示:

{ "merged" : [ 1, 2, 3, 4, 5, 6 ] }

结论

$concatArrays 运算符可以将多个数组合并为一个数组,适用于需要处理多个数组的聚合操作。