Hvis du har en MongoDB-samling med datoer gemt som strenge, kan du konvertere dem til Dato BSON-typen, hvis det kræves.
Nedenfor er tre måder at konvertere en streng til en dato i MongoDB.
Eksempel på data
Eksemplerne i denne artikel bruger følgende dokument i en samling kaldet dogs
:
{ "_id" : 1, "name" : "Fetch", "born" : "2021-01-03T23:30:15.123" }
Vi kan se, at born
feltet indeholder en dato, men denne dato er gemt som en streng.
Vi kan bruge følgende aggregeringspipeline-operatorer til at konvertere den streng til en dato.
$dateFromString
Operatør
$dateFromString
aggregeringspipeline-operatør blev designet specifikt til at konvertere en dato til en streng.
Det kræver en dateString
argument, som er den streng, du ønsker skal konverteres til en dato.
Her er et eksempel på at konvertere strengen i ovenstående samling til en dato:
db.dogs.aggregate([
{
$project: {
born: {
$dateFromString: {
dateString: '$born'
}
}
}
}
])
Resultat:
{ "_id" : 1, "born" : ISODate("2021-01-03T23:30:15.123Z") }
Vi kan se, at datoen nu er pakket ind i ISODate-hjælperen, hvilket betyder, at det er et Date-objekt.
$dateFromString
operatør accepterer en håndfuld andre argumenter, som alle er valgfrie. Se MongoDB $dateFromString
for mere information og eksempler.
$toDate
Operatør
$toDate
aggregeringspipeline-operatør konverterer en værdi til en dato. Værdien kan være en hvilken som helst type, der kan konverteres til en dato, som grundlæggende er tal, strenge og objekt-id'er.
Denne artikel handler om konvertering af strenge til datoer, og så her er et eksempel på brug af $toDate
at gøre netop det:
db.dogs.aggregate([
{
$project: {
"born": {
$toDate: "$born"
}
}
}
])
Resultat:
{ "_id" : 1, "born" : ISODate("2021-01-03T23:30:15.123Z") }
Se Mongo $toDate
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: "date",
onError: "An error occurred",
onNull: "Input was null or empty"
}
}
}
}
]
)
Resultat:
{ "_id" : 1, "result" : ISODate("2021-01-03T23:30:15.123Z") }
Du har måske bemærket, 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.