Om du har en MongoDB-samling med datum lagrade som strängar kan du konvertera dessa till Datum BSON-typen om det behövs.
Nedan finns tre sätt att konvertera en sträng till ett datum i MongoDB.
Exempeldata
Exemplen i den här artikeln använder följande dokument i en samling som heter dogs
:
{ "_id" : 1, "name" : "Fetch", "born" : "2021-01-03T23:30:15.123" }
Vi kan se att born
fältet innehåller ett datum, men det datumet lagras som en sträng.
Vi kan använda följande aggregeringspipeline-operatorer för att konvertera den strängen till ett datum.
$dateFromString
Operatör
$dateFromString
aggregeringspipeline-operatören designades specifikt för att konvertera ett datum till en sträng.
Det kräver en dateString
argument, vilket är strängen som du vill ska konverteras till ett datum.
Här är ett exempel på att konvertera strängen i ovanstående samling till ett datum:
db.dogs.aggregate([
{
$project: {
born: {
$dateFromString: {
dateString: '$born'
}
}
}
}
])
Resultat:
{ "_id" : 1, "born" : ISODate("2021-01-03T23:30:15.123Z") }
Vi kan se att datumet nu är inslaget i ISODate-hjälpen, vilket betyder att det är ett Date-objekt.
$dateFromString
operatören accepterar en handfull andra argument, som alla är valfria. Se MongoDB $dateFromString
för mer information och exempel.
$toDate
Operatör
$toDate
aggregeringspipeline-operatör konverterar ett värde till ett datum. Värdet kan vara vilken typ som helst som kan konverteras till ett datum, vilket i princip är siffror, strängar och objekt-ID.
Den här artikeln handlar om att konvertera strängar till datum, så här är ett exempel på hur du använder $toDate
för att göra just det:
db.dogs.aggregate([
{
$project: {
"born": {
$toDate: "$born"
}
}
}
])
Resultat:
{ "_id" : 1, "born" : ISODate("2021-01-03T23:30:15.123Z") }
Se Mongo $toDate
för mer information och exempel.
$convert
Operatör
$convert
operatören är speciellt utformad för att konvertera mellan en typ och en annan.
input
parametern anger fältet du vill konvertera och to
parameter anger vilken typ du vill konvertera den till.
Exempel:
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 kanske har märkt att $convert
operatören accepterar också onError
och onNull
parametrar, som tillåter oss att tillhandahålla ett meddelande att använda i händelse av ett fel eller en null
värde. Detta förhindrar att hela aggregeringsoperationen stoppas, och det möjliggör ett användarvänligt felmeddelande i utdatadokumentet.
Se MongoDB $convert
för mer information och exempel.