sql >> Base de Datos >  >> NoSQL >> MongoDB

3 formas de convertir una fecha en una cadena en MongoDB

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.