MongoDB har en Date BSON-typ som låter dig lagra datum som datum.
Du kan också lagra datum som strängar, om det är vad du behöver.
Om du tar det ett steg längre kan du också konvertera ett datum till en sträng.
Den här artikeln presenterar tre sätt att konvertera ett datum till en sträng i MongoDB.
Exempeldata
Exemplen i den här artikeln använder följande dokument i en samling som heter cats
:
{
"_id" : 1,
"name" : "Scratch",
"born" : ISODate("2021-01-03T23:30:15.123Z")
}
Lägg märke till att born
fältet är ett datum. I följande exempel används olika pipelineoperatorer för aggregering för att konvertera detta fält till en sträng.
$dateToString
Operatör
$dateToString
aggregeringspipeline-operatören är det mest självklara stället att börja.
Som namnet antyder är dess enda syfte att konvertera ett datum till en sträng (och returnera resultatet).
Exempel:
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" }
Här tillhandahöll jag en formatsträng för att ange formatet för den resulterande strängen. I det här fallet använde jag %Y-%m-%dT%H:%M:%S.%LZ
, vilket är standardformatet. Om jag inte hade angett ett format så är detta formatet som det skulle ha använt.
Du kan flytta runt dessa formatspecifikationer för att passa din resulterande sträng.
Vi skulle till exempel kunna göra detta:
db.cats.aggregate( [ { $project: { _id: 0, dateString: { $dateToString: { format: "%d/%m/%Y", date: "$born" } } } } ] )
Resultat:
{ "dateString" : "03/01/2021" }
Se MongoDB $dateToString
för mer information om den här operatören.
$toString
Operatör
$toString
aggregeringspipeline-operator liknar $dateToString
, förutom att det kan konvertera från olika typer – det är inte bara begränsat till att konvertera från ett datum.
Men för våra syften konverterar vi från ett datum.
Exempel:
db.cats.aggregate(
[
{
$project: {
_id: 0,
dateString: { $toString: "$born" }
}
}
]
)
Resultat:
{ "dateString" : "2021-01-03T23:30:15.123Z" }
Den här operatören ger oss inte möjlighet att ange ett format, så formatet returneras som det är.
Se MongoDB $toString
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: "string",
onError: "An error occurred",
onNull: "Input was null or empty"
}
}
}
}
]
)
Resultat:
{ "_id" : 1, "result" : "2021-01-03T23:30:15.123Z" }
Lägg märke till 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.