Toutes les réponses ci-dessus sont étonnantes et correctes. Je voudrais juste ajouter une amélioration aux réponses, à savoir l'utilisation de $type
.
Démarrer avec MongoDB 3.2 vous pouvez éviter d'utiliser 10
(car les valeurs littérales codées en dur réduisent la lisibilité du code) et peuvent simplement utiliser des alias de chaînes de caractères, c'est-à-dire "null"
. En résumé
1. Si vous souhaitez sélectionner des enregistrements où sent_at
existe et a la valeur null
db.emails.count({sent_at: { $type: 'null' }});
// or
// This reduces the code readability as your peer might not know
// that what is the meaning of value 10
db.emails.count({sent_at: { $type: 10 }});
2. Si vous souhaitez sélectionner des enregistrements qui ont soit sent_at: null
o sent_at
n'existe pas
// This will ensure both the conditions
db.emails.count({ sent_at: null })
3. Si vous ne voulez que les enregistrements où sent_at
n'existe pas
db.emails.count({sent_at: { $exists: false }});
4. Si vous voulez seulement choisir sent_at
où le champ existe et peut avoir n'importe quelle valeur
db.emails.count({sent_at: { $exists: true }});
N'oubliez pas que cette opération permet d'extraire n'importe quel document de la base de données emails
qui a une valeur quelconque, y compris null
, 0
, ''
, false
.