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.