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.