2014-04-09 2 views
0

배열 값을 사용하여 연산자 쿼리를 생성하려고합니다. 내 코드는Spring mongo와 같은 필드의 연산자

String[]={"abc","pqr",xyz}; 

Criteria criteria = new Criteria();  
for (int i = 0; i < splited.length; i++) { 
    criteria.andOperator(Criteria.where("attribute").regex("^" + splited[i], "i")); 
} 
Query query=new Query(criteria); 

입니다. 그러나 Due to limitations of the com.mongodb.BasicDBObject, you can't add a second 'attribute과 같은 예외가 있습니다.

답변

0

$and으로 왜 이것을 나눕니다. 당신은 정규식이 작업을 수행 할 수 있습니다

db.collection.find({ 
    "attribute": {"$regex": "^abc|^pqr|^xyz", "$options": "i" } 
}) 

는 실제로 정규식이 무엇 인 $or 상태처럼 보인다 물론, 당신은 실제로 원하는해야하는 문자열은 아마도 그 모두 일치 할 수 없기 때문에 문자열의 처음부터 사물, 당신은 오직 하나만 가질 수 있습니다.

스프링 데이터 몽고 방법으로 쉽게 변환해야합니다.

1
String[]={"abc","pqr",xyz}; 

Query query = new Query(); 

Criteria criteria; 

for (int i = 0; i < splited.length; i++) { 
    criteria = Criteria.where("attribute").regex("^" + splited[i], "i"); 
    query.addCriteria(criteria); 
} 
관련 문제