$hour (Obter Hora)
Última atualização: 2026-10-09
$hour (Obter Hora)
$hour retorna a parte de horas de uma data (0 a 23) — comum para análise de tráfego por hora, janelas de alerta ou relatórios horários. Retorna um inteiro em formato de 24 horas. timezone importa muito aqui: UTC mais 8 horas dá o horário de Pequim, então análises entre fusos devem definir timezone explicitamente ou cada intervalo desloca. O padrão é UTC.
| Categoria | Data |
|---|---|
| Versão do MongoDB | 1.0+ |
| Idioma do Exemplo | mongosh (Shell) |
📝 Sintaxe
{ $hour: { date: <expressão de data>, timezone: <fuso horário> } }
⚙️ Parâmetros
| date | Obrigatório; a expressão de data. |
|---|---|
| timezone | Fuso horário opcional; o padrão é UTC. |
Retorno:A hora (0-23); null se date for null.
▶ Exemplo
Execute os comandos abaixo no seu mongosh local (requer um mongod em execução):
// $hour: visitas por hora (horário de Pequim)
db.visits.aggregate([
{ $group: {
_id: { $hour: { date: '$visitAt', timezone: 'Asia/Shanghai' } },
pv: { $sum: 1 }
} }
])
Saída:
{ "_id": 9, "pv": 2300 }
{ "_id": 10, "pv": 3100 }
📌 Notas
- Formato de 24 horas, intervalo de 0 a 23
- O fuso horário desloca as horas como um todo: às 8 no UTC+8, o UTC ainda é 0
- Para semântica de negócios como "que horas", sempre passe timezone
🏷️ Tags Relacionados
💡 Casos Relacionados
Mais casos práticos em breve.
📚 Tutoriais Relacionados
❓ Perguntas Frequentes
QQual é o intervalo?
ADe 0 a 23, formato de 24 horas.
QPor que meus dados horários estão deslocados?
AProvavelmente o fuso horário — passe um fuso local como 'Asia/Shanghai'.
QConsigo gerar horas de dois dígitos como 09?
AUse o marcador %H de $dateToString.