回答:
db.things.find( { a : { $exists : false } } ); // return if a is missingtrueの場合、$ existsは、フィールド値がnullであるドキュメントを含む、フィールドを含むドキュメントと一致します。がfalseの場合、クエリはフィールドを含まないドキュメントのみを返します。
scope :without_recommendation, :where => {:recommendation => {"$exists"=>false}}
                    フィールドが欠落していないnullかどうか(またはまったくない場合)が気にならない場合はnull、少し短くて安全です。
db.things.find( { a : null } ); // return if a is missing or nullフィールドがnullであっても$exists返されるため、安全ですtrue。これは、多くの場合、望ましい結果ではなく、NPEにつながる可能性があります。
null欠落していない必要があるため、コードを読んでいる誰かがそれを解釈する場合があります。これは実際には予期しない動作です。同じことを行うことはできないため0(これもfalse)、ここでnullは一種の例外です。したがって、ベストプラクティスは、$exists: falseあいまいではない、より読みやすい回答を使用することです。コメントを付ける必要がある場合、少し短いバリアントは実際には短くありません。
                    aのいずれかのために、aであるnullかのでa不足している、そして$existsそれは例キャッチしないように、良い十分ではありませんaですnull。
                    
$existクエリはインデックスを使用できません(mongodb.org/display/DOCS/…を参照)。