0

私はRails 3でMongoidを介してMongoDBを使用しており、でクエリを実行するときにこの奇妙な動作を観察しますrails console:

> Table.where(:field => {"$exists" => true}).count
=> 3735
> Table.where(:field => {"$exists" => true}, :field => {"$ne" => ""}).count
=> 14878 # wtf???
> Table.where(:field => {"$exists" => true}, :field => "").count
=> 0 # at least it's not negative
> Table.where(:field => {"$exists" => false}).count
=> 11143

以来、 が存在しないレコードもカウント11143 + 3735 = 14878すると仮定します(なぜなら?)。ただし、 にリストされている条件は で結合されると考えていたので、が空の文字列でなく AND が存在するレコードのみに一致するはずです。where(:field => {"$exists" => true}, :field => {"$ne" => ""}):fieldnil != ""#whereand:field

4

1 に答える 1