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

3 modi per convertire una stringa in una data in MongoDB

Se disponi di una raccolta MongoDB con date archiviate come stringhe, puoi convertirle nel tipo Date BSON, se necessario.

Di seguito sono riportati tre modi per convertire una stringa in una data in MongoDB.

Dati di esempio

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

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

Possiamo vedere che il born campo contiene una data, ma tale data viene memorizzata come stringa.

Possiamo utilizzare i seguenti operatori della pipeline di aggregazione per convertire quella stringa in una data.

Il $dateFromString Operatore

Il $dateFromString l'operatore della pipeline di aggregazione è stato progettato specificamente per convertire una data in una stringa.

Richiede un dateString argomento, che è la stringa che vuoi convertire in una data.

Ecco un esempio di conversione della stringa nella raccolta sopra in una data:

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

Risultato:

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

Possiamo vedere che la data è ora racchiusa nell'helper ISODate, il che significa che è un oggetto Date.

Il $dateFromString operatore accetta una manciata di altri argomenti, tutti facoltativi. Vedi MongoDB $dateFromString per ulteriori informazioni ed esempi.

Il $toDate Operatore

Il $toDate l'operatore della pipeline di aggregazione converte un valore in una data. Il valore può essere qualsiasi tipo che può essere convertito in una data, che è fondamentalmente numeri, stringhe e ID oggetto.

Questo articolo riguarda la conversione di stringhe in date, quindi ecco un esempio di utilizzo di $toDate per fare proprio questo:

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

Risultato:

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

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

Risultato:

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

Potresti aver notato 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.