しないドキュメントを検索する 特定のキーがあり、$exists
:
したがって、存在チェックは次のようになります。
Model.where(:field.exists => false)
Model.where(:field => { :$exists => false })
最初の:field.exists
に注意してください formは、MongoDBに送信される前の2番目のフォームになります。 :field
を使用できなくなるため、これについて説明します。 $and
を使用せずにクエリの他の場所 または$or
句を組み合わせるには::field.exists
拡張により、クエリハッシュのキーが相互に上書きされる可能性があります。ここではこの問題は発生しませんが、リマインダーを傷つけることはできません。
true
を探しています 簡単です:
Model.where(:field => true)
どちらかが必要なので、$or
:
Model.where(:$or => [
{ :field.exists => false },
{ :field => true }
])
:field
の場合 そこにあるかもしれませんが、null
があります 値の場合、{ :field => nil }
を使用できます :field
のドキュメントと一致させる null
です または まったくありません:
Model.where(:$or => [
{ :field => null },
{ :field => true }
])
# or
Model.where(:field.in => [ null, true ]) # This is probably the one you want
{ :field => { :$type => 10 } }
もあります そしてそこにあるものを探しているなら 明示的にnull
。今こそ、MongoDB FAQを簡単に確認する良い機会かもしれません: