sent_at
日付フィールドを持つEmail
ドキュメントがあります:
{
'sent_at': Date( 1336776254000 )
}
このEmail
が送信されていない場合、sent_at
フィールドはnullまたは存在しません。
すべての送信済み/未送信の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
を持つドキュメントのみをカウントする場合(sent_at
が設定されていないドキュメントはカウントしないでください):
db.emails.count({sent_at: { $type: 10 }})
つかいます:
db.emails.count({sent_at: null})
Sent_atプロパティがnullまたは設定されていないすべてのメールをカウントします。上記のクエリは以下と同じです。
db.emails.count($or: [
{sent_at: {$exists: false}},
{sent_at: null}
])
あなたはただ単一の行を行うことができるようです:
{ "sent_at": null }
これを試すこともできます:
db.emails.find($and:[{sent_at:{$exists:true},'sent_at':null}]).count()