2012-10-02 3 views
1

나는 임무 제목에 대소 문자를 구분하지 않는 몽고메드 쿼리를 만들고 싶다.몽고 이드 caseinensitive 쿼리

class Mission 
    include Mongoid::Document 

    field :title 
    filed :description 
end 

이가 mongoid 범위/인덱스 수행 할 수 있으며, 그것이 무엇과 같을 것이다 :

모델의 모습을 말할 수 있습니다?

또한 데이터를 비정규 화하고 인덱싱 가능한 소문자 필드를 보유하는 것이 더 나은 방법입니까? 그렇다면 그 모양은 어떻습니까?

대단히 감사합니다.

+0

현재 대소 문자를 구분하지 않는 인덱스를 지원하는 티켓이 열려 있습니다. https://jira.mongodb.org/browse/SERVER-90 –

답변

2

가장 적합한 솔루션을 인덱싱 할 필드 인 경우 here과 같이 필드의 대문자/소문자 버전을 보유하는 추가 필드를 추가하는 것입니다.

그렇지 않은 경우 query by a case insensitive regex 수 있습니다. 이것은 성능에 영향을 미치지 만 가볍게 처리됩니다.

db.Mission.find({"title" : /foo/i})