MongoDB heeft een Date BSON-type waarmee u datums als datums kunt opslaan.
Je kunt datums ook als strings opslaan, als dat is wat je nodig hebt.
Als u nog een stap verder gaat, kunt u ook een datum naar een tekenreeks converteren.
Dit artikel presenteert drie manieren om een datum te converteren naar een tekenreeks in MongoDB.
Voorbeeldgegevens
De voorbeelden in dit artikel gebruiken het volgende document in een verzameling met de naam cats
:
{
"_id" : 1,
"name" : "Scratch",
"born" : ISODate("2021-01-03T23:30:15.123Z")
}
Merk op dat de born
veld is een Datum. In de volgende voorbeelden worden verschillende aggregatiepijplijnoperators gebruikt om dit veld in een tekenreeks om te zetten.
De $dateToString
Operator
De $dateToString
aggregatiepijplijnbeheerder is de meest voor de hand liggende plek om te beginnen.
Zoals de naam al aangeeft, is het enige doel om een Datum naar een tekenreeks te converteren (en het resultaat terug te geven).
Voorbeeld:
db.cats.aggregate(
[
{
$project: {
_id: 0,
dateString: { $dateToString: { format: "%Y-%m-%dT%H:%M:%S.%LZ", date: "$born" } }
}
}
]
)
Resultaat:
{ "dateString" : "2021-01-03T23:30:15.123Z" }
Hier heb ik een format string gegeven om het formaat van de resulterende string te specificeren. In dit geval gebruikte ik %Y-%m-%dT%H:%M:%S.%LZ
, wat de standaardindeling is. Als ik geen formaat had gespecificeerd, is dit het formaat dat het zou hebben gebruikt.
U kunt deze formaatspecificaties verplaatsen om ze aan te passen aan uw resulterende tekenreeks.
We zouden dit bijvoorbeeld kunnen doen:
db.cats.aggregate( [ { $project: { _id: 0, dateString: { $dateToString: { format: "%d/%m/%Y", date: "$born" } } } } ] )
Resultaat:
{ "dateString" : "03/01/2021" }
Zie MongoDB $dateToString
voor meer informatie over deze operator.
De $toString
Operator
De $toString
aggregatiepijplijnoperator is vergelijkbaar met $dateToString
, behalve dat het van verschillende typen kan converteren - het is niet alleen beperkt tot het converteren van een datum.
Maar voor onze doeleinden converteren we van een datum.
Voorbeeld:
db.cats.aggregate(
[
{
$project: {
_id: 0,
dateString: { $toString: "$born" }
}
}
]
)
Resultaat:
{ "dateString" : "2021-01-03T23:30:15.123Z" }
Deze operator geeft ons niet de mogelijkheid om een formaat op te geven, dus het formaat wordt geretourneerd zoals het is.
Zie MongoDB $toString
voor meer informatie en voorbeelden.
De $convert
Operator
De $convert
operator is speciaal ontworpen voor het converteren van het ene type naar het andere.
De input
parameter specificeert het veld dat u wilt converteren, en de to
parameter specificeert het type waarnaar u het wilt converteren.
Voorbeeld:
db.cats.aggregate(
[
{
$project:
{
result:
{
$convert: {
input: "$born",
to: "string",
onError: "An error occurred",
onNull: "Input was null or empty"
}
}
}
}
]
)
Resultaat:
{ "_id" : 1, "result" : "2021-01-03T23:30:15.123Z" }
Merk op dat de $convert
operator accepteert ook onError
en onNull
parameters, waarmee we een bericht kunnen geven dat kan worden gebruikt in het geval van een fout of een null
waarde. Dit voorkomt dat de hele aggregatiebewerking stopt en zorgt voor een gebruiksvriendelijke foutmelding in het uitvoerdocument.
Zie MongoDB $convert
voor meer informatie en voorbeelden.