Definición
Devuelve una matriz con los valores de la matriz concatenada de los documentos en una ventana.
Nota
Desambiguación
Esta página describe $concatArrays cuando se utiliza como función de ventana.
También puedes usar $concatArrays en estos otros contextos:
$concatArrays (accumulator), que concatena los valores de la matriz de un campo a través de un grupo de documentos.$concatArrays (expression), que concatena dos o más matrices en una sola matriz dentro de un mismo documento.
Sintaxis
{ $setWindowFields: { ... output: { <field>: { $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
El siguiente ejemplo utiliza la colección movies del conjunto de datos de muestra sample_mflix. Para obtener más información sobre cómo cargar este conjunto de datos en su implementación, consulte Cargar el conjunto de datos de muestra.
El ejemplo utiliza $setWindowFields para particionar las películas por año de lanzamiento y concatenar los arreglos genres dentro de cada partición, ordenados por título. Cada documento recibe la concatenación de los arreglos genres desde la primera película en su partición hasta el documento actual:
db.movies.aggregate( [ { $match: { year: { $in: [1914, 1915] } } }, { $setWindowFields: { partitionBy: { year: "$year" }, sortBy: { title: 1 }, output: { combinedGenres: { $concatArrays: "$genres", window: { documents: ["unbounded", "current"] } } } } }, { $project: { _id: 0, year: 1, title: 1, combinedGenres: 1 } } ] )
La tubería precedente:
Utiliza
$setWindowFieldspara particionar las películas poryearconpartitionByy ordenar cada partición portitle. La etapa aplica$concatArraysal campogenressobre una ventana de documentos de[ "unbounded", "current" ]. El campocombinedGenrescontiene los géneros concatenados desde la primera película de la partición hasta el documento actual.Utiliza
$projectpara incluiryear,titleycombinedGenresen la salida.
El array combinedGenres crece dentro de cada partición a medida que cada documento aporta su array genres.