Comment sélectionner les documents mongodb où le champ est un nombre?
Quelques exemples du contenu de ce champ: "2", "a", "Z", 3
Vous pouvez utiliser l'opérateur $ type pour sélectionner en fonction du type BSON du champ, ce qui devrait vous donner ce que vous voulez.
Ainsi, par exemple, pour trouver toutes les chaînes:
db.collection.find( { field: { $type : 2 } } )
Ou, pour trouver tous les doubles (qui sont généralement les numéros stockés à partir du shell grâce au comportement Javascript par défaut), vous utiliseriez:
db.collection.find( { field: { $type : 1 } } )
Puisqu'il y a deux types d'entiers (potentiellement), vous devrez utiliser quelque chose comme ceci:
db.collection.find({$or : [{"field" : { $type : 16 }}, {"field" : { $type : 18 }}]})
Enfin, pour obtenir tous les nombres, entiers ou doubles:
db.collection.find({$or : [{"field" : { $type : 1 }}, {"field" : { $type : 16 }}, {"field" : { $type : 18 }}]})
Vous pouvez le type d'un champ bar
en utilisant
typeof db.foo.findOne().bar
http://docs.mongodb.org/manual/core/Shell-types/#check-types-in-Shell
vous pouvez utiliser l'alias "nombre" à la place:
{ field: {$type:"number"}}
typeof
dans mongo renvoie également object
pour le type array
. Pour vérifier si un champ est un Number
, exécutez la requête ci-dessous pour voir s'il renvoie un résultat.
db.foo.find('Object.prototype.toString.call(this.bar) === "[object Number]"')
Vous pouvez également voir https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/toString