$dateToString (agregação)
Definição
Compatibilidade
Você pode utilizar o $dateToString
para implantações hospedadas nos seguintes ambientes:
MongoDB Atlas: o serviço totalmente gerenciado para implantações do MongoDB na nuvem
MongoDB Enterprise: a versão autogerenciada e baseada em assinatura do MongoDB
MongoDB Community: uma versão com código disponível, de uso gratuito e autogerenciada do MongoDB
Sintaxe
A expressão $dateToString
tem a seguinte sintaxe de expressão do operador:
{ $dateToString: { date: <dateExpression>, format: <formatString>, timezone: <tzExpression>, onNull: <expression> } }
O $dateToString
pega um documento com os seguintes campos:
Campo | Descrição | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
date | |||||||||||||
format | Opcional. A especificação do formato de data. Se não for especificado, | ||||||||||||
timezone |
| ||||||||||||
onNull | Opcional. O valor a devolver se o Se não for especificado, |
Especificadores de formato
Os seguintes especificadores de formato estão disponíveis para uso no <formatString>
:
Especificadores | Descrição | Valores possíveis |
---|---|---|
%d | Dia do mês (2 dígitos, zero acolchoado) | 01 -31 |
%G | Ano no formato ISO 8601 Novidade na versão 3.4. | 0000 -9999 |
%H | Hora (2 dígitos, zero acolchoado, relógio de 24 horas) | 00 -23 |
%j | Dia do ano (3 dígitos, zero preenchido) | 001 -366 |
%L | Milissegundo (3 dígitos, zero preenchido) | 000 -999 |
%m | Mês (2 dígitos, zero preenchido) | 01 -12 |
%M | Minuto (2 dígitos, zero preenchido) | 00 -59 |
%S | Segundo (2 dígitos, zero preenchido) | 00 -60 |
%w | Dia da semana (1-domingo, 7-sábado) | 1 -7 |
%u | Número do dia da semana no formato ISO 8601 (1-segunda, 7-domingo) Novidade na versão 3.4. | 1 -7 |
%U | Semana do ano (2 dígitos, zero preenchido) | 00 -53 |
%V | Semana do ano no formato ISO 8601 Novidade na versão 3.4. | 01 -53 |
%Y | Ano (4 dígitos, zero preenchido) | 0000 -9999 |
%z | Deslocamento do fuso horário de UTC. Novidade na versão 3.6. | +/-[hh][mm] |
%Z | Os minutos são compensados do UTC como um número. Por exemplo, se o deslocamento de fuso horário ( Novidade na versão 3.6. | +/-mmm |
%% | Caractere percentual como literal | % |
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 seguinte agregação utiliza $dateToString
para retornar o campo date
como strings formatadas:
db.sales.aggregate( [ { $project: { yearMonthDayUTC: { $dateToString: { format: "%Y-%m-%d", date: "$date" } }, timewithOffsetNY: { $dateToString: { format: "%H:%M:%S:%L%z", date: "$date", timezone: "America/New_York"} }, timewithOffset430: { $dateToString: { format: "%H:%M:%S:%L%z", date: "$date", timezone: "+04:30" } }, minutesOffsetNY: { $dateToString: { format: "%Z", date: "$date", timezone: "America/New_York" } }, minutesOffset430: { $dateToString: { format: "%Z", date: "$date", timezone: "+04:30" } } } } ] )
A operação retorna o seguinte resultado:
{ "_id" : 1, "yearMonthDayUTC" : "2014-01-01", "timewithOffsetNY" : "03:15:39:736-0500", "timewithOffset430" : "12:45:39:736+0430", "minutesOffsetNY" : "-300", "minutesOffset430" : "270" }