MongoDB:如何查询字段为空或没有设置的logging?

我有一个Email文件,其中有一个sent_atdate字段:

 { 'sent_at': Date( 1336776254000 ) } 

如果此Email尚未发送,则sent_at字段为空或不存在。

我需要得到所有发送/未发送的Emails 。 我被困在试图找出正确的方式来查询这些信息。 我认为这是获得发送计数的正确方法:

 db.emails.count({sent_at: {$ne: null}}) 

但是我应该如何得到那些没有发送的数量呢?

如果sent_at字段没有设置,那么:

 db.emails.count({sent_at: {$exists: false}}) 

如果它在那里,而且根本不存在:

 db.emails.count({sent_at: null}) 

请参阅此处查询和null

如果您只想计算sent_at定义的值为null的文档(不计算sent_at未设置的文档):

 db.emails.count({sent_at: { $type: 10 }}) 

似乎你可以做单行:

 { "sent_at": null } 

使用:

 db.emails.count({sent_at: null}) 

对所有sent_at属性为空或未设置的电子邮件进行计数。 上面的查询和下面的一样。

 db.emails.count($or: [ {sent_at: {$exists: false}}, {sent_at: null} ]) 
Interesting Posts