@kyanny's blog

My thoughts, my life. Views/opinions are my own.

MongoDB (MongoMapper) で「Array 型フィールドが空でない」条件で検索

User.where(permissions: {"$exists" => true, "$not" => {"$size" => 0}}).count
  • :permissions => [ ] である、という条件は { :permissions => { "$size" => 0 } } と書ける
  • :permissions => [ ] ではない、という条件は $not をはさんで { :permissions => { "$not" => { "$size" => 0 } } } と書ける
  • これだけだと :permissions => nil なレコードを除外できないので { :permissions => { "$exists" => true } } と組み合わせる
  • 最終的に上記のようになる