MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

3 façons de convertir une date en chaîne dans MongoDB

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.