MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

3 maneiras de converter uma string em uma data no MongoDB


Se você tiver uma coleção do MongoDB com datas armazenadas como strings, poderá convertê-las no tipo Date BSON, se necessário.

Abaixo estão três maneiras de converter uma string em uma data no MongoDB.

Dados de amostra


Os exemplos neste artigo usam o seguinte documento em uma coleção chamada dogs :
{ "_id" : 1, "name" : "Fetch", "born" : "2021-01-03T23:30:15.123" }

Podemos ver que o born campo contém uma data, mas essa data é armazenada como uma string.

Podemos usar os seguintes operadores de pipeline de agregação para converter essa string em uma data.

A $dateFromString Operador


O $dateFromString O operador de pipeline de agregação foi projetado especificamente para converter uma data em uma string.

Requer um dateString argumento, que é a string que você deseja converter em uma data.

Aqui está um exemplo de conversão da string na coleção acima para uma data:
db.dogs.aggregate([ 
  {
    $project: {
        born: {
          $dateFromString: {
              dateString: '$born'
          }
        }
    }
  } 
])

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

Podemos ver que a data agora está envolvida no auxiliar ISODate, o que significa que é um objeto Date.

O $dateFromString O operador aceita vários outros argumentos, todos opcionais. Veja MongoDB $dateFromString para mais informações e exemplos.

O $toDate Operador


O $toDate operador de pipeline de agregação converte um valor em uma data. O valor pode ser qualquer tipo que possa ser convertido em uma data, que é basicamente números, strings e objectIds.

Este artigo é sobre como converter strings em datas, então aqui está um exemplo de uso de $toDate para fazer exatamente isso:
db.dogs.aggregate([ 
  {
    $project: {
        "born": { 
          $toDate: "$born" 
        }
    }
  } 
])

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

Veja Mongo $toDate para mais informações e exemplos.

O $convert Operador


O $convert operador foi projetado especificamente para a conversão entre um tipo e outro.

A input O parâmetro especifica o campo que você deseja converter e o parâmetro to O parâmetro especifica o tipo para o qual você deseja convertê-lo.

Exemplo:
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") }

Você deve ter notado que o $convert operador também aceita onError e onNull parâmetros, o que nos permite fornecer uma mensagem para usar no caso de um erro ou um null valor. Isso evita que toda a operação de agregação seja interrompida e permite uma mensagem de erro amigável no documento de saída.

Veja MongoDB $convert para mais informações e exemplos.