Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/ / /

$toDate (agregação)

Nesta página

  • Definição
  • Comportamento
  • Exemplo
$toDate

Converte um valor para uma data. Se o valor não puder ser convertido em uma data, $toDate apresentará erro. Se o valor for nulo ou estiver ausente, $toDate retornará nulo.

$toDate tem a seguinte sintaxe:

{
$toDate: <expression>
}

O $toDate usa qualquer expressãoválida.

O $toDate é uma abreviatura para a seguinte expressão $convert:

{ $convert: { input: <expression>, to: "date" } }

Dica

Veja também:

  • $convert

  • $dateFromString

A tabela a seguir lista os tipos de entrada que podem ser convertidos em uma data:

Tipo de entrada
Comportamento

Double

Retorna uma data que corresponde ao número de milissegundos representado pelo valor double truncado.

O número positivo corresponde ao número de milissegundos desde 1° de janeiro de 1970.

O número negativo corresponde ao número de milissegundos antes de 1° de janeiro de 1970.

Decimal

Retorna uma data que corresponde ao número de milissegundos representados pelo valor decimal truncado.

O número positivo corresponde ao número de milissegundos desde 1° de janeiro de 1970.

O número negativo corresponde ao número de milissegundos antes de 1° de janeiro de 1970.

Long

Retorna uma data que corresponde ao número de milissegundos representados pelo valor longo.

O número positivo corresponde ao número de milissegundos desde 1° de janeiro de 1970.

O número negativo corresponde ao número de milissegundos antes de 1° de janeiro de 1970.

String

Retorna uma data que corresponde à string de data.

A string deve ser uma string de data válida, como:

  • "2018-03-20"

  • "2018-03-20T12:00:00Z"

  • "2018-03-20T12:00:00+0500"

ObjectId

Retorna uma data que corresponde ao carimbo de data/hora do ObjectId.

Timestamp

Retorna uma data que corresponde ao carimbo de data/hora.

A tabela a seguir lista alguns exemplos de conversão em data:

Exemplo
Resultados

{$toDate: 120000000000.5}

ISODate("1973-10-20T21:20:00Z")

{$toDate: NumberDecimal("1253372036000.50")}

ISODate("2009-09-19T14:53:56Z")

{$toDate: NumberLong("1100000000000")}

ISODate("2004-11-19T11:33:20Z")

{$toDate: NumberLong("-1100000000000")}

ISODate("1935-02-22T12:26:40Z")

{$toDate: ObjectId("5ab9c3da31c2ab715d421285")}

ISODate("2018-03-27T04:08:58Z")

{$toDate: "2018-03-20"}

ISODate("2018-03-20T00:00:00Z")

{$toDate: "2018-03-20 11:00:06 +0500"}

ISODate("2018-03-20T06:00:06Z")

{$toDate: "Friday"}

Erro

{$toDate: Timestamp({ t: 1637688118, i: 1 })}

ISODate("2021-11-23T17:21:58.00Z")

Crie uma collection orders com os seguintes documentos:

db.orders.insertMany( [
{ _id: 1, item: "apple", qty: 5, price: 2, order_date: new Date( "2018-03-20" ) },
{ _id: 2, item: "pie", qty: 10, price: 3, order_date: new Date( "2018-03-22" ) },
{ _id: 3, item: "ice cream", qty: 2, price: 4, order_date: "2018-03-15" },
{ _id: 4, item: "almonds" , qty: 5, price: 7, order_date: "2018-03-15 +10:00" }
] )

A seguinte operação de aggregation na collection orders converte o order_date na data anterior à ordenação pelo valor da data:

// Define stage to add convertedDate field with the converted order_date value
dateConversionStage = {
$addFields: {
convertedDate: { $toDate: "$order_date" }
}
};
// Define stage to sort documents by the converted date
sortStage = {
$sort: { "convertedDate": 1 }
};
db.orders.aggregate( [
dateConversionStage,
sortStage
] )

A operação retorna os seguintes documentos:

{
_id: 4,
item: 'almonds',
qty: 5,
price: 7,
order_date: '2018-03-15 +10:00',
convertedDate: ISODate("2018-03-14T14:00:00.000Z")
},
{
_id: 3,
item: 'ice cream',
qty: 2,
price: 4,
order_date: '2018-03-15',
convertedDate: ISODate("2018-03-15T00:00:00.000Z")
},
{
_id: 1,
item: 'apple',
qty: 5,
price: 2,
order_date: ISODate("2018-03-20T00:00:00.000Z"),
convertedDate: ISODate("2018-03-20T00:00:00.000Z")
},
{
_id: 2,
item: 'pie',
qty: 10,
price: 3,
order_date: ISODate("2018-03-22T00:00:00.000Z"),
convertedDate: ISODate("2018-03-22T00:00:00.000Z")
}

Observação

Se a operação de conversão encontrar um erro, a operação de aggregation interromperá e exibirá um erro. Para substituir esse comportamento, use $convert em vez disso.

Voltar

$toBool