Definición
Devuelve una única matriz que concatena dos o más matrices.
$concatArrays se puede utilizar como un acumulador de agregación o un operador de matriz.
Acumulador de agregación
$concatArrays está disponible como acumulador en estas etapas:
Sintaxis
Cuando se utiliza como acumulador de agregación, $concatArrays tiene la siguiente sintaxis:
{ $concatArrays: "<array field>" }
Comportamiento
Los argumentos que son null o se resuelven en null se incluyen en los resultados. Los argumentos que hacen referencia a un campo faltante 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 usar $concatArrays como acumulador. Combina los elementos de todos los arrays items al agrupar por 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 utiliza como operador de matriz, $concatArrays tiene la siguiente sintaxis:
{ $concatArrays: [ <array1>, <array2>, ... ] }
Comportamiento
Las <array> expresiones pueden ser cualquier expresión válida siempre que se resuelvan en una matriz. Para más información sobre expresiones, consulte Expresiones.
Si algún argumento se resuelve en un valor de null o hace referencia a un campo que falta, $concatArrays nulldevuelve.
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 las matrices 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.