sql >> データベース >  >> NoSQL >> MongoDB

値またはデフォルト値によるMongoidクエリ

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




    1. mongodbのフィールドの値のみを返す方法

    2. mongodbに接続できません

    3. 配列の値に基づいてコレクションを並べ替えるにはどうすればよいですか

    4. MongoDBアプリケーションのアップグレードをテストする方法は?