Definição
- $hour
- Retorna a parte de hora de uma data como um número entre 0 e 23. - A expressão tem a - $hourseguinte sintaxe de expressão do operador :- { $hour: <dateExpression> } - O argumento pode ser: - Uma expressão que produza uma Data, um Timestamp ou um ObjectID. 
- Um documento com este formato: - { date: <dateExpression>, timezone: <tzExpression> } CampoDescrição- date- timezone- Optional.O fuso horário do resultado da operação.- <tzExpression>deve ser uma expressão válida que resolva para uma string formatada como um Identificador de fuso horário Olson ou um Deslocamento UTC. Se nenhum- timezonefor fornecido, o resultado será exibido em- UTC.FormatarExemplos- Olson Timezone Identifier- "America/New_York" - "Europe/London" - "GMT" - UTC Offset- +/-[hh]:[mm], e.g. "+04:45" - +/-[hh][mm], e.g. "-0530" - +/-[hh], e.g. "+03" 
 
Comportamento
| Exemplo | Resultado | ||||
|---|---|---|---|---|---|
|  | 12 | ||||
|  | 0 | ||||
|  | 19 | ||||
|  | 0 | ||||
|  | 5 | ||||
|  | 
 | ||||
|  | 
 | ||||
|  | 
 | 
Observação
$hour não pode aceitar uma string como argumento.
Exemplo
Considere uma coleção sales com o seguinte documento:
{   "_id" : 1,   "item" : "abc",   "price" : 10,   "quantity" : 2,   "date" : ISODate("2014-01-01T08:15:39.736Z") } 
A agregação a seguir utiliza o $hour e outras expressões de data para decompor o campo date:
db.sales.aggregate(    [      {        $project:          {            year: { $year: "$date" },            month: { $month: "$date" },            day: { $dayOfMonth: "$date" },            hour: { $hour: "$date" },            minutes: { $minute: "$date" },            seconds: { $second: "$date" },            milliseconds: { $millisecond: "$date" },            dayOfYear: { $dayOfYear: "$date" },            dayOfWeek: { $dayOfWeek: "$date" }          }      }    ] ) 
A operação retorna o seguinte resultado:
{   "_id" : 1,   "year" : 2014,   "month" : 1,   "day" : 1,   "hour" : 8,   "minutes" : 15,   "seconds" : 39,   "milliseconds" : 736,   "dayOfYear" : 1,   "dayOfWeek" : 4,   "week" : 0 }