2012-07-19 7 views
1

MongoDB를 사용하고 있습니다! 여기에서 지원되는 다양한 검색 기능을 사용해 보았습니다. 나는 문서를 검색 할 수Java를 사용하여 MongoDB에서 와일드 카드 검색을 수행하는 방법

는 (관계없이 사건의) 다음과 같은 옵션이 포함 된 이름 = MongoDB의 말 - 가 goDB, 몽고, 이동합니다. 다음 옵션 - Mon * DB, * on * DB에서 문서를 검색합니다. 즉, 동일한 검색 텍스트에 여러 개의 와일드 카드가있는 것입니다.

모든 포인터가 감사하겠습니다!

답변

5

당신은 여기에 당신이 당신의 패턴의 첫 번째 할 거라고 방법, 몽고의 필드에 Regular expression 일치를 수행 할 수 있습니다

Pattern p = Pattern.compile("Mon.*DB", CASE_INSENSITIVE); 
BasicDBObject query = new BasicDBObject("name", p); 

// finds all records with "name" matching /Mon.*DB/i 
DBCursor cursor = collection.find(query); 

하지만, 많은 정규 표현식 일치 전체 테이블 스캔을 필요로주의해야합니다. 즉, 대규모 콜렉션에 대해 실행하면 엔진이 모든 문서를 반복하여 (아마도 디스크를 때리는) 매치를 개별적으로 검사해야합니다. 이것은 인덱스를 사용하는 쿼리보다 훨씬 느립니다.

인덱스를 공격하는 유일한 정규식은 대/소문자를 구분하는 접두사 일치입니다. 이와 같이 모든 '월 *'을 검색하여 색인을 사용할 수 있습니다.

관련 문제