$zip (Mesclar Vários Arrays por Posição)
Última atualização: 2026-10-09
$zip (Mesclar Vários Arrays por Posição)
$zip mescla vários arrays por posição em grupos, cada um segurando o elemento no mesmo índice de cada entrada — um alinhamento vertical de arrays. Por padrão, trunca no array mais curto; definir useLongestLength como true alinha ao mais longo e preenche posições ausentes com defaults. Usos típicos: parear arrays de nomes com arrays de pontuações ou unir duas séries temporais. defaults deve ter o mesmo número de elementos que as entradas.
| Categoria | Array |
|---|---|
| Versão do MongoDB | 1.0+ |
| Idioma do Exemplo | mongosh (Shell) |
📝 Sintaxe
{ $zip: { inputs: [ <array1>, <array2>, ... ], useLongestLength: <booleano>, defaults: [ <padrão>, ... ] } }
⚙️ Parâmetros
| inputs | A lista de matrizes a mesclar. |
|---|---|
| useLongestLength | Booleano opcional; true alinha com a matriz mais longa. |
| defaults | Valores padrão opcionais que preenchem matrizes mais curtas; devem corresponder à contagem de entradas. |
Retorno:Uma matriz agrupada por posição; null quando qualquer entrada é null
▶ Exemplo
Execute os comandos abaixo no seu mongosh local (requer um mongod em execução):
// $zip: parear nomes com pontuações
db.students.aggregate([
{ $project: {
pairs: { $zip: { inputs: ['$names', '$scores'] } }
} }
])
Saída:
{ '_id': 1, 'pairs': [ [ 'alice', 90 ], [ 'bob', 85 ] ] }
📌 Notas
- Por padrão, trunca no array mais curto, descartando elementos excedentes
- Com useLongestLength true, forneça defaults ou posições ausentes viram null
- defaults deve ter exatamente tantos elementos quanto as entradas
🏷️ Tags Relacionados
💡 Casos Relacionados
Mais casos práticos em breve.
📚 Tutoriais Relacionados
❓ Perguntas Frequentes
QO que acontece quando os arrays têm comprimentos diferentes?
APor padrão, trunca no mais curto; defina useLongestLength true e forneça defaults.
QO que defaults faz?
APreenchem posições ausentes em arrays mais curtos e devem corresponder à contagem de entradas.
QComo $zip difere de $concatArrays?
A$zip alinha arrays verticalmente em tuplas; $concatArrays os encadeia horizontalmente em um array longo.