MongoDB har en Date BSON-type, der giver dig mulighed for at gemme datoer som datoer.
Du kan også gemme datoer som strenge, hvis det er det, du har brug for.
Hvis du tager det et skridt videre, kan du også konvertere en dato til en streng.
Denne artikel præsenterer tre måder at konvertere en dato til en streng i MongoDB.
Eksempel på data
Eksemplerne i denne artikel bruger følgende dokument i en samling kaldet cats
:
{
"_id" : 1,
"name" : "Scratch",
"born" : ISODate("2021-01-03T23:30:15.123Z")
}
Bemærk, at born
feltet er en dato. Følgende eksempler bruger forskellige aggregeringspipeline-operatorer til at konvertere dette felt til en streng.
$dateToString
Operatør
$dateToString
aggregeringspipeline-operatør er det mest oplagte sted at starte.
Som navnet antyder, er dens eneste formål at konvertere en dato til en streng (og returnere resultatet).
Eksempel:
db.cats.aggregate(
[
{
$project: {
_id: 0,
dateString: { $dateToString: { format: "%Y-%m-%dT%H:%M:%S.%LZ", date: "$born" } }
}
}
]
)
Resultat:
{ "dateString" : "2021-01-03T23:30:15.123Z" }
Her angav jeg en formatstreng for at angive formatet på den resulterende streng. I dette tilfælde brugte jeg %Y-%m-%dT%H:%M:%S.%LZ
, som er standardformatet. Hvis jeg ikke havde angivet et format, er dette det format, det ville have brugt.
Du kan flytte disse formatspecifikationer rundt, så de passer til din resulterende streng.
For eksempel kunne vi gøre dette:
db.cats.aggregate( [ { $project: { _id: 0, dateString: { $dateToString: { format: "%d/%m/%Y", date: "$born" } } } } ] )
Resultat:
{ "dateString" : "03/01/2021" }
Se MongoDB $dateToString
for mere information om denne operatør.
$toString
Operatør
$toString
aggregeringspipeline-operator ligner $dateToString
, bortset fra at det kan konvertere fra forskellige typer - det er ikke kun begrænset til at konvertere fra en dato.
Men til vores formål konverterer vi fra en dato.
Eksempel:
db.cats.aggregate(
[
{
$project: {
_id: 0,
dateString: { $toString: "$born" }
}
}
]
)
Resultat:
{ "dateString" : "2021-01-03T23:30:15.123Z" }
Denne operatør giver os ikke mulighed for at angive et format, så formatet returneres som det er.
Se MongoDB $toString
for mere information og eksempler.
$convert
Operatør
$convert
operatør blev specielt designet til at konvertere mellem en type og en anden.
input
parameter angiver det felt, du vil konvertere, og to
parameter angiver den type, du vil konvertere den til.
Eksempel:
db.cats.aggregate(
[
{
$project:
{
result:
{
$convert: {
input: "$born",
to: "string",
onError: "An error occurred",
onNull: "Input was null or empty"
}
}
}
}
]
)
Resultat:
{ "_id" : 1, "result" : "2021-01-03T23:30:15.123Z" }
Bemærk, at $convert
operatør accepterer også onError
og onNull
parametre, som giver os mulighed for at give en besked til brug i tilfælde af en fejl eller en null
værdi. Dette forhindrer hele aggregeringsoperationen i at stoppe, og det giver mulighed for en brugervenlig fejlmeddelelse i outputdokumentet.
Se MongoDB $convert
for mere information og eksempler.