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

3 formas de convertir una cadena en una fecha en MongoDB

Si tiene una colección MongoDB con fechas almacenadas como cadenas, puede convertirlas en el tipo BSON de fecha si es necesario.

A continuación se muestran tres formas de convertir una cadena en una fecha en MongoDB.

Datos de muestra

Los ejemplos de este artículo usan el siguiente documento en una colección llamada dogs :

{ "_id" : 1, "name" : "Fetch", "born" : "2021-01-03T23:30:15.123" }

Podemos ver que el born El campo contiene una fecha, pero esa fecha se almacena como una cadena.

Podemos usar los siguientes operadores de canalización de agregación para convertir esa cadena en una fecha.

El $dateFromString Operador

El $dateFromString El operador de canalización de agregación se diseñó específicamente para convertir una fecha en una cadena.

Requiere una dateString argumento, que es la cadena que desea convertir en una fecha.

Aquí hay un ejemplo de cómo convertir la cadena en la colección anterior a una fecha:

db.dogs.aggregate([ 
  {
    $project: {
        born: {
          $dateFromString: {
              dateString: '$born'
          }
        }
    }
  } 
])

Resultado:

{ "_id" : 1, "born" : ISODate("2021-01-03T23:30:15.123Z") }

Podemos ver que la fecha ahora está envuelta en el ayudante ISODate, lo que significa que es un objeto Fecha.

El $dateFromString El operador acepta un puñado de otros argumentos, todos los cuales son opcionales. Ver MongoDB $dateFromString para más información y ejemplos.

El $toDate Operador

El $toDate El operador de canalización de agregación convierte un valor en una fecha. El valor puede ser de cualquier tipo que se pueda convertir en una fecha, que es básicamente números, cadenas e ID de objeto.

Este artículo trata sobre la conversión de cadenas a fechas, por lo que aquí hay un ejemplo del uso de $toDate para hacer precisamente eso:

db.dogs.aggregate([ 
  {
    $project: {
        "born": { 
          $toDate: "$born" 
        }
    }
  } 
])

Resultado:

{ "_id" : 1, "born" : ISODate("2021-01-03T23:30:15.123Z") }

Ver Mongo $toDate 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: "date",
              onError: "An error occurred",
              onNull: "Input was null or empty" 
            }
          }
        }
    }
  ]
)

Resultado:

{ "_id" : 1, "result" : ISODate("2021-01-03T23:30:15.123Z") }

Es posible que haya notado 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.