Si vous avez une collection MongoDB avec des dates stockées sous forme de chaînes, vous pouvez les convertir en type Date BSON si nécessaire.
Vous trouverez ci-dessous trois façons de convertir une chaîne en une date dans MongoDB.
Exemple de données
Les exemples de cet article utilisent le document suivant dans une collection appelée dogs
:
{ "_id" : 1, "name" : "Fetch", "born" : "2021-01-03T23:30:15.123" }
Nous pouvons voir que le born
le champ contient une date, mais cette date est stockée sous forme de chaîne.
Nous pouvons utiliser les opérateurs de pipeline d'agrégation suivants pour convertir cette chaîne en date.
Le $dateFromString
Opérateur
Le $dateFromString
L'opérateur de pipeline d'agrégation a été spécialement conçu pour convertir une date en chaîne.
Il nécessite un dateString
argument, qui est la chaîne que vous souhaitez convertir en date.
Voici un exemple de conversion de la chaîne de la collection ci-dessus en une date :
db.dogs.aggregate([
{
$project: {
born: {
$dateFromString: {
dateString: '$born'
}
}
}
}
])
Résultat :
{ "_id" : 1, "born" : ISODate("2021-01-03T23:30:15.123Z") }
Nous pouvons voir que la date est maintenant enveloppée dans l'assistant ISODate, ce qui signifie qu'il s'agit d'un objet Date.
Le $dateFromString
L'opérateur accepte une poignée d'autres arguments, qui sont tous facultatifs. Voir MongoDB $dateFromString
pour plus d'informations et d'exemples.
Le $toDate
Opérateur
Le $toDate
L'opérateur de pipeline d'agrégation convertit une valeur en une date. La valeur peut être n'importe quel type pouvant être converti en date, c'est-à-dire essentiellement des nombres, des chaînes et des objectIds.
Cet article concerne la conversion de chaînes en dates, et voici donc un exemple d'utilisation de $toDate
pour faire juste ça :
db.dogs.aggregate([
{
$project: {
"born": {
$toDate: "$born"
}
}
}
])
Résultat :
{ "_id" : 1, "born" : ISODate("2021-01-03T23:30:15.123Z") }
Voir Mongo $toDate
pour plus d'informations et d'exemples.
Le $convert
Opérateur
Le $convert
L'opérateur a été spécialement conçu pour la conversion d'un type à l'autre.
L'input
Le paramètre spécifie le champ que vous souhaitez convertir, et le to
Le paramètre spécifie le type vers lequel vous souhaitez le convertir.
Exemple :
db.cats.aggregate(
[
{
$project:
{
result:
{
$convert: {
input: "$born",
to: "date",
onError: "An error occurred",
onNull: "Input was null or empty"
}
}
}
}
]
)
Résultat :
{ "_id" : 1, "result" : ISODate("2021-01-03T23:30:15.123Z") }
Vous avez peut-être remarqué que le $convert
l'opérateur accepte également onError
et onNull
paramètres, ce qui nous permet de fournir un message à utiliser en cas d'erreur ou de null
valeur. Cela empêche l'arrêt de toute l'opération d'agrégation et permet d'afficher un message d'erreur convivial dans le document de sortie.
Voir MongoDB $convert
pour plus d'informations et d'exemples.