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

3 maneiras de converter uma data em uma string no MongoDB


O MongoDB tem um tipo Date BSON que permite armazenar datas como datas.

Você também pode armazenar datas como strings, se for isso que você precisa.

Dando um passo adiante, você também pode converter uma Data em uma string.

Este artigo apresenta três maneiras de converter uma data em uma string no MongoDB.

Dados de amostra


Os exemplos neste artigo usam o seguinte documento em uma coleção chamada cats :
{
	"_id" : 1,
	"name" : "Scratch",
	"born" : ISODate("2021-01-03T23:30:15.123Z")
}

Observe que o born campo é uma data. Os exemplos a seguir usam vários operadores de pipeline de agregação para converter esse campo em uma string.

A $dateToString Operador


O $dateToString operador de pipeline de agregação é o lugar mais óbvio para começar.

Como o próprio nome indica, seu único objetivo é converter uma Data em uma string (e retornar o resultado).

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

Aqui, forneci uma string de formato para especificar o formato da string resultante. Nesse caso, usei %Y-%m-%dT%H:%M:%S.%LZ , que é o formato padrão. Se eu não tivesse especificado um formato, este é o formato que ele teria usado.

Você pode mover esses especificadores de formato para adequá-los à string resultante.

Por exemplo, poderíamos fazer isso:
db.cats.aggregate(
   [
     {
       $project: {
         _id: 0,
          dateString: { $dateToString: { format: "%d/%m/%Y", date: "$born" } }
       }
     }
   ]
)

Resultado:
{ "dateString" : "03/01/2021" }

Veja MongoDB $dateToString para obter mais informações sobre este operador.

A $toString Operador


O $toString operador de pipeline de agregação é semelhante a $dateToString , exceto que ele pode converter de vários tipos - não se limita apenas a converter de uma data.

Mas para nossos propósitos, estamos convertendo de um Date.

Exemplo:
db.cats.aggregate(
   [
     {
       $project: {
         _id: 0,
          dateString: { $toString: "$born" }
       }
     }
   ]
)

Resultado:
{ "dateString" : "2021-01-03T23:30:15.123Z" }

Este operador não nos dá a opção de especificar um formato, então o formato é retornado como está.

Veja MongoDB $toString 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: "string",
              onError: "An error occurred",
              onNull: "Input was null or empty" 
            }
          }
        }
    }
  ]
)

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

Observe que o $convert operador também aceita onError e onNull parâmetros, 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.