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

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

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.