MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

3 modi per convertire una data in una stringa in MongoDB

MongoDB ha un tipo Date BSON che ti consente di memorizzare le date come date.

Puoi anche memorizzare le date come stringhe, se è quello che ti serve.

Facendo un ulteriore passo avanti, puoi anche convertire una data in una stringa.

Questo articolo presenta tre modi per convertire una data in una stringa in MongoDB.

Dati di esempio

Gli esempi in questo articolo utilizzano il seguente documento in una raccolta denominata cats :

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

Nota che il born il campo è una data. Gli esempi seguenti utilizzano vari operatori della pipeline di aggregazione per convertire questo campo in una stringa.

Il $dateToString Operatore

Il $dateToString l'operatore della pipeline di aggregazione è il punto di partenza più ovvio.

Come suggerisce il nome, il suo unico scopo è convertire una data in una stringa (e restituire il risultato).

Esempio:

db.cats.aggregate(
   [
     {
       $project: {
         _id: 0,
          dateString: { $dateToString: { format: "%Y-%m-%dT%H:%M:%S.%LZ", date: "$born" } }
       }
     }
   ]
)

Risultato:

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

Qui, ho fornito una stringa di formato per specificare il formato della stringa risultante. In questo caso, ho usato %Y-%m-%dT%H:%M:%S.%LZ , che è il formato predefinito. Se non avessi specificato un formato, questo è il formato che avrebbe utilizzato.

Puoi spostare questi identificatori di formato per adattarli alla stringa risultante.

Ad esempio, potremmo fare questo:

db.cats.aggregate(
   [
     {
       $project: {
         _id: 0,
          dateString: { $dateToString: { format: "%d/%m/%Y", date: "$born" } }
       }
     }
   ]
)

Risultato:

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

Vedi MongoDB $dateToString per ulteriori informazioni su questo operatore.

Il $toString Operatore

Il $toString l'operatore della pipeline di aggregazione è simile a $dateToString , tranne per il fatto che può convertire da vari tipi:non si limita solo alla conversione da una data.

Ma per i nostri scopi, stiamo convertendo da una data.

Esempio:

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

Risultato:

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

Questo operatore non ci dà la possibilità di specificare un formato, quindi il formato viene restituito così com'è.

Vedi MongoDB $toString per ulteriori informazioni ed esempi.

Il $convert Operatore

Il $convert operatore è stato appositamente progettato per la conversione tra un tipo e l'altro.

L'input il parametro specifica il campo che vuoi convertire e il to parametro specifica il tipo in cui vuoi convertirlo.

Esempio:

db.cats.aggregate(
  [
    {
      $project:
        { 
          result: 
          {
            $convert: { 
              input: "$born", 
              to: "string",
              onError: "An error occurred",
              onNull: "Input was null or empty" 
            }
          }
        }
    }
  ]
)

Risultato:

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

Nota che il $convert l'operatore accetta anche onError e onNull parametri, che ci consente di fornire un messaggio da utilizzare in caso di errore o null valore. Ciò impedisce l'interruzione dell'intera operazione di aggregazione e consente un messaggio di errore intuitivo all'interno del documento di output.

Vedi MongoDB $convert per ulteriori informazioni ed esempi.