Definición
Devuelve un único arreglo que concatena dos o más arreglos. $concatArrays se puede usar como un acumulador de agregación o como un operador de arreglo.
Acumulador de agregación
$concatArrays está disponible como acumulador en estas etapas:
Sintaxis
Cuando se usa como acumulador de agregación, $concatArrays tiene la siguiente sintaxis:
{ $concatArrays: "<array field>" }
Comportamiento
Se incluirán en los resultados los argumentos que sean null o se resuelvan en null. Los argumentos que se refieren a un campo que falta no se incluyen en los resultados.
Ejemplo
Cree una colección llamada sales con los siguientes documentos:
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" } ] )
Este ejemplo muestra cómo puedes utilizar $concatArrays como acumulador. Este ejemplo combina los elementos de todos los arreglos items al agrupar en el campo location:
db.sales.aggregate( [ { $group: { _id: "$location", array: { "$concatArrays": "$items" } } } ] )
La operación devuelve el siguiente resultado:
[ { "_id": "NYC", "array": [ "laptop", "tablet", "phone", "tablet", "desktop", { "accessories": [ "mouse", "keyboard"] } ] } ]
Operador de arreglos
Sintaxis
Cuando se usa como operador de arreglo, $concatArrays tiene la siguiente sintaxis:
{ $concatArrays: [ <expression1>, <expression2>, ... ] }
Comportamiento
Los operandos <expression> pueden ser cualquier expresión válida si se resuelven en una matriz. Para obtener más información sobre expresiones, consulte la sección Expresiones.
Si algún argumento se resuelve en un valor de null o se refiere a un campo que falta, $concatArrays devuelve null.
Ejemplo | Resultados | |||||
|---|---|---|---|---|---|---|
| | |||||
| |
Ejemplo
Cree una colección llamada warehouses con los siguientes documentos:
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: [ ] } ] )
El siguiente ejemplo concatena los arreglos instock y ordered:
db.warehouses.aggregate( [ { $project: { items: { $concatArrays: [ "$instock", "$ordered" ] } } } ] )
La operación devuelve los siguientes resultados:
[ { _id : 1, items : [ "chocolate", "butter", "apples" ] }, { _id : 2, items : null }, { _id : 3, items : [ "pears", "pecans", "cherries" ] }, { _id : 4, items : [ "ice cream" ] } ]
Limitaciones
$concatArrays solo admite arreglos y expresiones que se resuelven en un arreglo.