$objectToArray (Converter Objeto em Array de Pares Chave-Valor)
Última atualização: 2026-10-09
$objectToArray (Converter Objeto em Array de Pares Chave-Valor)
$objectToArray converte um documento em um array de pares chave-valor, cada elemento no formato { k: 'nomeDoCampo', v: 'valorDoCampo' }. Brilha quando os nomes dos campos são dinâmicos (ex.: dimensões de pontuação por usuário), permitindo que $map/$filter processem cada campo uniformemente, e também é útil para achatar subdocumentos antes da agregação. O argumento deve ser um documento simples — um array gera erro. Combine com $arrayToObject para conversão de ida e volta.
| Categoria | Array |
|---|---|
| Versão do MongoDB | 1.0+ |
| Idioma do Exemplo | mongosh (Shell) |
📝 Sintaxe
{ $objectToArray: <objeto> }
⚙️ Parâmetros
| objeto | A expressão de documento (objeto BSON) a converter. |
|---|
Retorno:Uma matriz de pares chave-valor no formato { k: 'fieldName', v: 'value' }; null quando o argumento é null
▶ Exemplo
Execute os comandos abaixo no seu mongosh local (requer um mongod em execução):
// $objectToArray: transformar um subdocumento de pontuações em um array
db.users.aggregate([
{ $project: {
scores: { $objectToArray: '$scores' }
} }
])
Saída:
{ '_id': 1, 'scores': [ { 'k': 'math', 'v': 90 }, { 'k': 'eng', 'v': 85 } ] }
📌 Notas
- Cada elemento do resultado tem k como o nome do campo em string e v como o valor do campo
- Apenas documentos simples convertem; arrays ou escalares geram erro
- A ordem dos campos segue a ordem de inserção; combine com $map/$filter para lidar com campos dinâmicos
🏷️ Tags Relacionados
💡 Casos Relacionados
Mais casos práticos em breve.
📚 Tutoriais Relacionados
❓ Perguntas Frequentes
QComo lidar uniformemente com nomes de campos dinâmicos?
AConverta com $objectToArray primeiro, processe com $map/$filter e depois converta de volta com $arrayToObject.
QEle consegue converter um array?
ANão, o argumento deve ser um documento; arrays geram erro.
QA ordem dos campos é preservada?
ASim, a ordem de inserção é mantida.