MongoDB a un type Date BSON qui vous permet de stocker des dates sous forme de dates.
Vous pouvez également stocker des dates sous forme de chaînes, si c'est ce dont vous avez besoin.
Pour aller plus loin, vous pouvez également convertir une date en chaîne.
Cet article présente trois façons de convertir une date en chaîne dans MongoDB.
Exemple de données
Les exemples de cet article utilisent le document suivant dans une collection appelée cats
:
{
"_id" : 1,
"name" : "Scratch",
"born" : ISODate("2021-01-03T23:30:15.123Z")
}
Notez que le born
champ est une date. Les exemples suivants utilisent divers opérateurs de pipeline d'agrégation pour convertir ce champ en chaîne.
Le $dateToString
Opérateur
Le $dateToString
l'opérateur de pipeline d'agrégation est le point de départ le plus évident.
Comme son nom l'indique, son seul but est de convertir une date en chaîne (et de renvoyer le résultat).
Exemple :
db.cats.aggregate(
[
{
$project: {
_id: 0,
dateString: { $dateToString: { format: "%Y-%m-%dT%H:%M:%S.%LZ", date: "$born" } }
}
}
]
)
Résultat :
{ "dateString" : "2021-01-03T23:30:15.123Z" }
Ici, j'ai fourni une chaîne de format pour spécifier le format de la chaîne résultante. Dans ce cas, j'ai utilisé %Y-%m-%dT%H:%M:%S.%LZ
, qui est le format par défaut. Si je n'avais pas spécifié de format, c'est le format qu'il aurait utilisé.
Vous pouvez déplacer ces spécificateurs de format en fonction de votre chaîne résultante.
Par exemple, nous pourrions faire ceci :
db.cats.aggregate( [ { $project: { _id: 0, dateString: { $dateToString: { format: "%d/%m/%Y", date: "$born" } } } } ] )
Résultat :
{ "dateString" : "03/01/2021" }
Voir MongoDB $dateToString
pour plus d'informations sur cet opérateur.
Le $toString
Opérateur
Le $toString
l'opérateur de pipeline d'agrégation est similaire à $dateToString
, sauf qu'il peut convertir à partir de différents types - ce n'est pas seulement limité à la conversion à partir d'une Date.
Mais pour nos besoins, nous convertissons à partir d'une date.
Exemple :
db.cats.aggregate(
[
{
$project: {
_id: 0,
dateString: { $toString: "$born" }
}
}
]
)
Résultat :
{ "dateString" : "2021-01-03T23:30:15.123Z" }
Cet opérateur ne nous donne pas la possibilité de spécifier un format, donc le format est renvoyé tel quel.
Voir MongoDB $toString
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: "string",
onError: "An error occurred",
onNull: "Input was null or empty"
}
}
}
}
]
)
Résultat :
{ "_id" : 1, "result" : "2021-01-03T23:30:15.123Z" }
Notez 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.