MongoDB tiene un tipo BSON de fecha que le permite almacenar fechas como fechas.
También puede almacenar fechas como cadenas, si eso es lo que necesita.
Yendo un paso más allá, también puede convertir una fecha en una cadena.
Este artículo presenta tres formas de convertir una fecha en una cadena en MongoDB.
Datos de muestra
Los ejemplos de este artículo usan el siguiente documento en una colección llamada cats
:
{
"_id" : 1,
"name" : "Scratch",
"born" : ISODate("2021-01-03T23:30:15.123Z")
}
Note que el born
el campo es una fecha. Los siguientes ejemplos usan varios operadores de canalización de agregación para convertir este campo en una cadena.
El $dateToString
Operador
El $dateToString
El operador de tubería de agregación es el lugar más obvio para comenzar.
Como su nombre lo indica, su único propósito es convertir una fecha en una cadena (y devolver el resultado).
Ejemplo:
db.cats.aggregate(
[
{
$project: {
_id: 0,
dateString: { $dateToString: { format: "%Y-%m-%dT%H:%M:%S.%LZ", date: "$born" } }
}
}
]
)
Resultado:
{ "dateString" : "2021-01-03T23:30:15.123Z" }
Aquí, proporcioné una cadena de formato para especificar el formato de la cadena resultante. En este caso, usé %Y-%m-%dT%H:%M:%S.%LZ
, que es el formato predeterminado. Si no hubiera especificado un formato, este es el formato que habría utilizado.
Puede mover esos especificadores de formato para adaptarlos a la cadena resultante.
Por ejemplo, podríamos hacer esto:
db.cats.aggregate( [ { $project: { _id: 0, dateString: { $dateToString: { format: "%d/%m/%Y", date: "$born" } } } } ] )
Resultado:
{ "dateString" : "03/01/2021" }
Ver MongoDB $dateToString
para más información sobre este operador.
El $toString
Operador
El $toString
el operador de canalización de agregación es similar a $dateToString
, excepto que puede convertir varios tipos; no se limita solo a convertir desde una fecha.
Pero para nuestros propósitos, estamos convirtiendo desde una fecha.
Ejemplo:
db.cats.aggregate(
[
{
$project: {
_id: 0,
dateString: { $toString: "$born" }
}
}
]
)
Resultado:
{ "dateString" : "2021-01-03T23:30:15.123Z" }
Este operador no nos da la opción de especificar un formato, por lo que el formato se devuelve tal cual.
Ver MongoDB $toString
para más información y ejemplos.
El $convert
Operador
El $convert
El operador fue diseñado específicamente para convertir entre un tipo y otro.
La input
El parámetro especifica el campo que desea convertir y el to
El parámetro especifica el tipo al que desea convertirlo.
Ejemplo:
db.cats.aggregate(
[
{
$project:
{
result:
{
$convert: {
input: "$born",
to: "string",
onError: "An error occurred",
onNull: "Input was null or empty"
}
}
}
}
]
)
Resultado:
{ "_id" : 1, "result" : "2021-01-03T23:30:15.123Z" }
Observe que $convert
el operador también acepta onError
y onNull
parámetros, lo que nos permite proporcionar un mensaje para usar en caso de un error o un null
valor. Esto evita que toda la operación de agregación se detenga y permite un mensaje de error fácil de usar dentro del documento de salida.
Ver MongoDB $convert
para más información y ejemplos.