Email
日付フィールドを持つドキュメントがありますsent_at
:
{
'sent_at': Date( 1336776254000 )
}
Email
これが送信されていない場合、sent_at
フィールドは null か、存在しません。
すべての送信済み/未送信の数を取得する必要がありますEmails
。この情報を照会する正しい方法を見つけようとして行き詰まっています。送信済み数を取得する正しい方法は次のとおりだと思います:
db.emails.count({sent_at: {$ne: null}})
しかし、送信されなかったものの数をどうやって取得すればよいのでしょうか?
ベストアンサー1
sent_at
フィールドが設定されていないときにフィールドが存在しない場合は、次のようになります。
db.emails.count({sent_at: {$exists: false}})
存在していて null の場合、またはまったく存在しない場合:
db.emails.count({sent_at: null})
存在し、null の場合:
db.emails.count({sent_at: { $type: 10 }})
のNull または欠落フィールドのクエリMongoDB マニュアルのセクションでは、null 値と欠損値をクエリする方法について説明しています。
平等フィルター
クエリ
{ item : null }
は、値がnull
またはフィールドが含まれませんitem
。db.inventory.find( { item: null } )
存在チェック
次の例では、フィールドを含まないドキュメントをクエリします。
クエリ
{ item : { $exists: false } }
は、次のフィールドを含まないドキュメントと一致しますitem
。db.inventory.find( { item : { $exists: false } } )
型チェック
クエリ
{ item : { $type: 10 } }
が一致するのみitem
値が であるフィールドを含む文書null
。つまり、アイテムフィールドの値が である文書。BSONタイプNull
(タイプ番号10
) :db.inventory.find( { item : { $type: 10 } } )