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
.