2014-03-14 4 views
0

웹 응용 프로그램에서 집을 검색하는 데 검색 양식을 사용합니다. 양식쿼리 빌더를 사용하여 mongodb의 동적 쿼리

private String type; 
private Long minPrice; 
private Long maxPrice; 
private Integer minBedRooms; 

이 양식을 사용하여 모든 필드에 데이터를 입력 할 때 주택을 검색하는 데 사용할이며, 다음과 같은 필드가 있습니다. 예를 들어 사용자는 모든 필드에 각각 "Rent 200 5000 2" 데이터를 입력하십시오. 내가 빈 위의 필드 중 하나를 떠날 때이에 대한 나의 쿼리는 0 결과를 반환, NOW

Query query = new Query(where("type") 
      .is(form.getType()) 
      .and("bedrooms") 
      .is(form.getMinBedRooms()) 
      .andOperator(where("price").lte(form.getMaxPrice()), 
        where("price").gte(form.getMinPrice()))); 

입니다. 예를 들어 maxPrice이 null이면 0 결과를 반환합니다. 내 질문에 어떻게 null 값을 igone 수 있도록 위의 쿼리를 작성해야합니다. 예를 들어, 나는 maxPriceminBedRooms 필드는 그것이 내가 MongoDB를

봄 4. 봄의 데이터를 사용하고있는 typeminPrice

내가 이틀 동안이 붙어있다 기반으로 데이터를 검색합니다 비워두고 저는 어떤 종류의 도움에 대해서도 매우 감사 할 것입니다. 감사

답변

2

대해 다음은 동일하지만 주위 등

Query query = new Query(); 

    if (form.getType() != null) { 
     query.addCriteria(Criteria.where("type") 
     .is(form.getType()); 
    } 

    if (form.getMinBedrooms() != 0) { 
     query.addCriteira(Criteria.where("bedrooms") 
     .is(form.getMinBedRooms()) 
    } 

및 로직 테스트를 첨가. Query 객체로 작업하고 조건을 추가하십시오.

+0

고맙습니다. – Shahzeb