No MongoDB, o
$toDate operador de agregação converte um valor em uma data $toDate recebe qualquer expressão válida. Se a expressão não puder ser convertida em uma data, ela retornará um erro. Se a expressão for null ou ausente, ele retorna null . Exemplo
Suponha que tenhamos uma coleção chamada
samples com o seguinte documento:{
"_id" : ObjectId("60066f1cc8eb4369cf6ad9c9"),
"double" : 1613372035500.75,
"decimal" : NumberDecimal("1613372035500.75"),
"long" : NumberLong("1613372035500"),
"string" : "2021-02-15 06:53:55"
} Podemos usar a seguinte consulta para retornar cada um desses valores como uma Data.
db.samples.aggregate(
[
{
$project:
{
_id: 0,
"ObjectId": { $toDate: "$_id" },
"double": { $toDate: "$double" },
"decimal": { $toDate: "$decimal" },
"long": { $toDate: "$long" },
"string": { $toDate: "$string" }
}
}
]
).pretty() Resultado:
{
"ObjectId" : ISODate("2021-01-19T05:33:16Z"),
"double" : ISODate("2021-02-15T06:53:55.500Z"),
"decimal" : ISODate("2021-02-15T06:53:55.500Z"),
"long" : ISODate("2021-02-15T06:53:55.500Z"),
"string" : ISODate("2021-02-15T06:53:55Z")
} Como esperado, todos os campos são retornados com seus valores correspondentes convertidos em valores de data.
Você pode notar que o campo ObjectId retorna uma data diferente dos demais. Isso ocorre porque o
_id o valor do campo reflete a data em que o documento foi criado, enquanto as outras datas foram apenas datas arbitrárias criadas por mim. Mais sobre o ObjectId abaixo. Tipos de entrada
O
$toDate O operador aceita os seguintes tipos de entrada:- Duplo
- Decimal
- Longo
- String (deve ser uma string de data válida)
- ObjectID
Mais sobre estes abaixo.
Tipos Numéricos
Ao usar os tipos numéricos (Double, Decimal e Long),
$toDate retorna uma data que corresponde ao número de milissegundos representado pelo valor. Para Double e Decimal, este é o valor truncado. O $toDate O operador interpreta os valores numéricos da seguinte forma:- Um valor positivo corresponde ao número de milissegundos desde 1º de janeiro de 1970.
- Um valor negativo corresponde ao número de milissegundos antes de 1º de janeiro de 1970.
Tipos de string
Ao usar um tipo de string, a string deve ser uma string de data válida. Por exemplo:
"2021-02-15""15 February 2021""2021-02-15 06:53:55""2021-02-15 06:53:55+1100"
Você não pode usar datas incompletas ou valores inválidos, como
"Monday" , "March" , "2020" , etc ObjectId
Os valores ObjectId são valores hexadecimais de 12 bytes que consistem em:
- Um valor de carimbo de data/hora de 4 bytes, representando a criação do ObjectId, medido em segundos desde a época do Unix.
- Um valor de 5 bytes é aleatório
- Um contador de incremento de 3 bytes, inicializado com um valor aleatório.
O
$toDate O operador retorna a parte do carimbo de data/hora como uma Data.