MongoDB:如何查询字段为空或没有设置的logging?
我有一个Email
文件,其中有一个sent_at
date字段:
{ '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} ])