しないドキュメントを検索する 特定のキーがあり、$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を簡単に確認する良い機会かもしれません: