Docs Menu
Docs Home
/ /
Operadores de tuberías de agregación

$toDate (agregación)

$toDate

Convierte un valor en una fecha. Si el valor no se puede convertir a una fecha, se$toDate genera$toDate un error. Si el valor es nulo o falta, devuelve un valor nulo.

$toDate tiene la siguiente sintaxis:

{
$toDate: <expression>
}

El toma cualquier valor $toDate válido expresión.

$toDate es una abreviatura de la siguiente $convert expresión:

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

Tip

  • $convert

  • $dateFromString

La siguiente tabla enumera los tipos de entrada que se pueden convertir a una fecha:

Tipo de entrada
Comportamiento

Double

Devuelve una fecha que corresponde a la cantidad de milisegundos representados por el valor doble truncado.

El número positivo corresponde al número de milisegundos desde el 1 de enero de 1970.

El número negativo corresponde al número de milisegundos antes de enero 1, 1970.

Decimal

Devuelve una fecha que corresponde a la cantidad de milisegundos representados por el valor decimal truncado.

El número positivo corresponde al número de milisegundos desde el 1 de enero de 1970.

El número negativo corresponde al número de milisegundos antes de enero 1, 1970.

Long

Devuelve una fecha que corresponde a la cantidad de milisegundos representados por el valor largo.

El número positivo corresponde al número de milisegundos desde el 1 de enero de 1970.

El número negativo corresponde al número de milisegundos antes de enero 1, 1970.

String

Devuelve una fecha que corresponde a la string de fecha.

La cadena debe ser una cadena de fecha válida, como por ejemplo:

  • "2018-03-20"

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

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

ObjectId

Devuelve una fecha que corresponde a la marca de tiempo del ObjectId.

Marca de tiempo

Devuelve una fecha que corresponde a la marca de tiempo.

La siguiente tabla enumera algunos ejemplos de conversión a fecha:

Ejemplo
Resultados

{$toDate: 120000000000.5}

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

{$toDate: Decimal128("1253372036000.50")}

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

{$toDate: Long("1100000000000")}

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

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

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

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

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

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

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

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

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

{$toDate: "Friday"}

Error

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

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

Cree una colección orders con los siguientes 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" }
] )

La siguiente operación de agregación en la colección orders convierte order_date en fecha antes de ordenar por el valor de fecha:

// 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
] )

La operación devuelve los siguientes 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")
}

Nota

Si la operación de conversión detecta un error, la operación de agregación se detiene y genera un error. Para anular este comportamiento,$convert utilice.

Volver

$toBool

En esta página