2013-07-15 4 views
1

Java에서 일부 문자열 (BasicDBOject 사용)이있는 일부 레코드를 DB에서 건너 뛰고 싶습니다. 예를 들어 말할 :Java에서 mongodb의 레코드를 필터링하는 방법

"설명", "코멘트"

나는 "설명"필드의 값의 일환으로 "테스트 메시지"가 기록을하지 않으라는 컬렉션 내 필드의 이름입니다.

+0

인덱스를 사용할 수 없으며 대신 모든 '설명'에서 정규식을 실행하므로 성능이 저조한 쿼리가 될 것입니다. – WiredPrairie

+0

질문은 전에 답변되었습니다 : http://stackoverflow.com/questions/5608584/how-to-query-mongodb-with-like-using-the-java-api/5608625#5608625 – WiredPrairie

답변

1

자신을 조사하는 데 너무 많은 노력을 기울인 것처럼 보이지 않으므로 http://docs.mongodb.org/ecosystem/tutorial/getting-started-with-java-driver/#getting-a-set-of-documents-with-a-queryhttp://api.mongodb.org/java/current/com/mongodb/QueryBuilder.html#regex%28java.util.regex.Pattern%29의 문서를 참조하십시오. 코드는 다음과 같습니다.

Mongo m = new Mongo(); 
m.setWriteConcern(WriteConcern.SAFE); 
DBCollection c = m.getDB("testdb").getCollection("collection"); 

Pattern pattern = Pattern.compile("Test Message"); 
DBObject query = QueryBuilder.start(). 
     QueryBuilder.start("description").regex(pattern).get(); 
System.out.println(c.find(query).count()); 
+0

이 답변은 현재 유효합니다. Java API 버전 3.4.1 이상과 관련된 날짜입니다. – sharky

관련 문제