$densify (Densificar)
Última atualização: 2026-10-09
$densify (Densificar)
$densify gera documentos em valores intermediários ausentes de um campo, tipicamente para interpolação de séries temporais — preenchendo lacunas em etapas fixas de hora em hora, diárias ou outras. Campos numéricos também são suportados. Especifique o campo, um intervalo (passo, unidade, limites) e um partitionByFields opcional.
| Categoria | Agrupamento e Janela |
|---|---|
| Versão do MongoDB | 5.1+ |
| Idioma do Exemplo | mongosh (Shell) |
📝 Sintaxe
{ $densify: { field: "<field>", range: { step: <step>, unit: <unit>, bounds: <bounds> }, partitionByFields: [ ... ] } }
⚙️ Parâmetros
| field | Campo a densificar; deve ser numérico ou uma data. |
|---|---|
| range | Objeto que define step, unit (para datas) e o intervalo de limites. |
| partitionByFields | Campos de partição; cada partição é densificada de forma independente. |
Retorno:Fluxo de documentos com valores ausentes preenchidos
▶ Exemplo
Execute os comandos abaixo no seu mongosh local (requer um mongod em execução):
// $densify: preenche leituras de temperatura a cada hora
db.temperature.aggregate([
{ $densify: {
field: 'date',
range: { step: 1, unit: 'hour', bounds: 'full' }
} }
])
Saída:
// As horas ausentes são preenchidas; outros campos são copiados
📌 Notas
- Somente campos numéricos e de data são suportados
- partitionByFields densifica cada partição de forma independente
- bounds pode ser full, limites de partição ou um array explícito
🏷️ Tags Relacionados
💡 Casos Relacionados
📚 Tutoriais Relacionados
❓ Perguntas Frequentes
QPara que serve o $densify?
AEle preenche pontos de tempo ausentes em um passo fixo, para que gráficos e interpolações funcionem em séries completas.
QQuais unidades estão disponíveis?
AAs unidades de tempo incluem minute, hour, day, week, month, quarter, year e outras.
QQuantos documentos o $densify produz?
ADepende do passo e dos limites: intervalos amplos com passos pequenos geram muitos documentos, então fique de olho na memória.