MongoDB: Comment interroger les enregistrements où le champ est null ou non?
J'ai un document Email
qui a un champ sent_at
date:
{
'sent_at': Date( 1336776254000 )
}
Si ce Email
n'a pas été envoyé, le sent_at
champ est null, ou inexistant.
J'ai besoin d'obtenir le nombre de tous les envoyés/non Emails
. Je suis coincé à essayer de trouver la bonne façon de demander cette information. Je pense que c'est la bonne façon d'obtenir le nombre envoyé:
db.emails.count({sent_at: {$ne: null}})
, Mais comment dois-je obtenir le nombre de ceux qui ne sont pas envoyés?
4 réponses
Si le champ sent_at n'est pas là quand il n'est pas défini alors:
db.emails.count({sent_at: {$exists: false}})
Si c'est là et null, ou pas du tout:
db.emails.count({sent_at: null})
Si vous voulez compter uniquement les documents avec sent_at
définis avec une valeur de null
(Ne comptez pas les documents avec sent_at
non défini):
db.emails.count({sent_at: { $type: 10 }})
Utilisation:
db.emails.count({sent_at: null})
Qui compte tous les e-mails dont la propriété sent_at est null ou n'est pas définie. La requête ci-dessus est la même que ci-dessous.
db.emails.count($or: [
{sent_at: {$exists: false}},
{sent_at: null}
])
Semble que vous pouvez simplement faire une seule ligne:
{ "sent_at": null }