rails console
에 쿼리를 수행 할 때 내가 레일 3 Mongoid을 통해 MongoDB를를 사용하고이 이상한 행동을 관찰 해요 :Mongoid 이상한 쿼리 결과
> 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
때문에, 나는 where(:field => {"$exists" => true}, :field => {"$ne" => ""})
도 :field
가있는 레코드를 계산한다고 가정 존재하지 않습니다 (왜냐하면 nil != ""
?). 그러나 #where
에 나열된 조건은 and
과 결합되므로 :field
이 빈 문자열이 아니고 AND 인 레코드 만 일치해야합니다.
대단히 감사합니다. – xaxa
기꺼이 도와 드리겠습니다. 레일스 로그를 검사하여 MongoDB/Moped가 MongoDB로 보낸 쿼리를 볼 수도 있습니다. –