Als u een MongoDB-verzameling heeft met datums die zijn opgeslagen als strings, kunt u deze indien nodig converteren naar het type Date BSON.
Hieronder staan drie manieren om een string om te zetten in een datum in MongoDB.
Voorbeeldgegevens
De voorbeelden in dit artikel gebruiken het volgende document in een verzameling met de naam dogs
:
{ "_id" : 1, "name" : "Fetch", "born" : "2021-01-03T23:30:15.123" }
We kunnen zien dat de born
veld een datum bevat, maar die datum wordt opgeslagen als een string.
We kunnen de volgende aggregatiepijplijnoperators gebruiken om die string om te zetten in een datum.
De $dateFromString
Operator
De $dateFromString
aggregatiepijplijnoperator is speciaal ontworpen voor het converteren van een datum naar een tekenreeks.
Het vereist een dateString
argument, wat de tekenreeks is die u naar een datum wilt converteren.
Hier is een voorbeeld van het converteren van de tekenreeks in de bovenstaande verzameling naar een datum:
db.dogs.aggregate([
{
$project: {
born: {
$dateFromString: {
dateString: '$born'
}
}
}
}
])
Resultaat:
{ "_id" : 1, "born" : ISODate("2021-01-03T23:30:15.123Z") }
We kunnen zien dat de datum nu is ingepakt in de ISODate-helper, wat betekent dat het een Date-object is.
De $dateFromString
operator accepteert een handvol andere argumenten, die allemaal optioneel zijn. Zie MongoDB $dateFromString
voor meer informatie en voorbeelden.
De $toDate
Operator
De $toDate
aggregatiepijplijnoperator converteert een waarde naar een datum. De waarde kan van elk type zijn dat kan worden geconverteerd naar een datum, in feite getallen, tekenreeksen en object-ID's.
Dit artikel gaat over het converteren van tekenreeksen naar datums, dus hier is een voorbeeld van het gebruik van $toDate
om precies dat te doen:
db.dogs.aggregate([
{
$project: {
"born": {
$toDate: "$born"
}
}
}
])
Resultaat:
{ "_id" : 1, "born" : ISODate("2021-01-03T23:30:15.123Z") }
Zie Mongo $toDate
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: "date",
onError: "An error occurred",
onNull: "Input was null or empty"
}
}
}
}
]
)
Resultaat:
{ "_id" : 1, "result" : ISODate("2021-01-03T23:30:15.123Z") }
Het is je misschien opgevallen 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.