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

Opérateur de pipeline d'agrégation MongoDB $type

Dans MongoDB, le $type L'opérateur de pipeline d'agrégation renvoie le type BSON de son argument.

Vous pouvez l'utiliser pour connaître le type d'un champ donné.

Exemple

Supposons que nous ayons une collection appelée cats avec le document suivant :

{ "_id" :ObjectId("60173c09c8eb4369cf6ad9e0"), "name" :"Scratch", "born" :ISODate("2021-01-03T23:30:15.123Z"), "weight" :30} 

Nous pouvons utiliser le code suivant pour renvoyer les types de ces champs :

db.cats.aggregate(
  [
    {
      $project:
        { 
          _id: { $type: "$_id" },
          name: { $type: "$name" },
          born: { $type: "$born" },
          weight: { $type: "$weight" }
        }
    }
  ]
).pretty() 

Résultat :

{ "_id" :"objectId", "name" :"string", "born" :"date", "weight" :"double"}

Exemple 2

Voici un autre exemple qui contient divers champs de différents types de BSON.

Nous avons une collection appelée types avec le document suivant :

{ "_id" :ObjectId("601738d7c8eb4369cf6ad9de"), "double" :123.75, "string" :"123", "boolean" :true, "date" :ISODate("2020-12-31T23:30 :15.123Z"), "integer" :123, "long" :NumberLong(123), "decimal" :NumberDecimal("123.75"), "object" :{ "a" :1 }, "array" :[ 1, 2, 3 ]}

Pour les besoins de cet article, j'ai nommé chaque champ pour refléter son type BSON.

Nous pouvons maintenant utiliser le code suivant pour renvoyer les types de ces champs :

db.types.aggregate(
  [
    {
      $project:
        { 
          _id: { $type: "$_id" },
          double: { $type: "$double" },
          string: { $type: "$string" },
          boolean: { $type: "$boolean" },
          date: { $type: "$date" },
          integer: { $type: "$integer" },
          long: { $type: "$long" },
          decimal: { $type: "$decimal" },
          object: { $type: "$object" },
          array: { $type: "$array" }
        }
    }
  ]
).pretty() 

Résultat :

{ "_id" :"objectId", "double" :"double", "string" :"string", "boolean" :"bool", "date" :"date", "integer" :"int ", "long" :"long", "decimal" :"decimal", "object" :"object", "array" :"array"}

Filtrer par type

Il y a aussi un $type Opérateur de requête d'élément qui vous permet de filtrer une collection de documents en fonction du type BSON.

Vérifier les chiffres

Si vous voulez juste vérifier si une valeur est un nombre, voir MongoDB $isNumber .