Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.

$dateToString ( operador de expressão )

$dateToString

Converte um objeto de data em uma string de acordo com um formato especificado pelo usuário.

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

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

Alterado na versão 3.6.

A data para converter em string. <dateExpression> deve ser uma expressão válida que resolva para uma Date, um Timestamp ou um ObjectID.

format

Opcional. A especificação do formato de data. <formatString> pode ser qualquer string literal, contendo 0 ou mais especificadores de formato. Para obter uma lista de especificadores disponíveis, consulte Especificadores de formato.

Se não for especificado, $dateToString usará "%Y-%m-%dT%H:%M:%S.%LZ" como o formato padrão.

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 timezone for fornecido, o resultado será exibido em UTC.

  • 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"

onNull

Opcional. O valor a devolver se o date for nulo ou estiver ausente. Os argumentos podem ser qualquer expressãoválida.

Se não for especificado, $dateToString retornará nulo se date for nulo ou estiver ausente.

Os seguintes especificadores de formato estão disponíveis para uso no <formatString>:

Especificadores
Descrição
Valores possíveis

%b

Nome do mês abreviado (3 letras)

Novidades na versão 7.0.

jan-dec

%B

Nome do mês inteiro

Novidades na versão 7.0.

january-december

%d

Dia do mês (2 dígitos, zero acolchoado)

01-31

%G

Ano no formato ISO 8601

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

%u

Número do dia da semana no formato ISO 8601 (1-segunda, 7-domingo)

1-7

%U

Semana do ano (2 dígitos, zero preenchido)

00-53

%V

Semana do ano no formato ISO 8601

01-53

%w

Dia da semana (1-domingo, 7-sábado)

1-7

%Y

Ano (4 dígitos, zero preenchido)

0000-9999

%z

Deslocamento do fuso horário de UTC.

+/-[hh][mm]

%Z

Os minutos são compensados do UTC como um número. Por exemplo, se o deslocamento de fuso horário (+/-[hhmm]) foi +0445, o deslocamento de minutos é +285.

+/-mmm

%%

Caractere percentual como literal

%

Considere uma coleção sales com o seguinte documento:

db.sales.insertOne( { "_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" } }, abbreviated_month: { $dateToString: {format: "%b", date: "$date", timezone: "+04:30" } }, full_month: { $dateToString: { format: "%B", 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", "abbreviated_month": "Jan", "full_month": "January"}