2017-09-14 82 views
1

有人能幫助我做一個查詢(蒙戈),以新的MongoDB的類型(例如):MongoDB的自定義查詢春季數據蒙戈

@Override 
public Long maxCodigoSecuencia() { 
final Query query = new Query().limit(1).with(new Sort(Sort.Direction.DESC, "codigo_secuencia")); 
Oportunidad oportunidad = mongoTemplate.findOne(query, Oportunidad.class); 
return oportunidad.getCodidoSecuencia(); 

}

實體(MongoDB的):

Opportunity 
    String commercial (id) 
    String statu (enum) 
    String product (id) 

DTO過濾器:

dtoFilter 
    List<String> commercial (id of comercial) 
    List<String> statu (enum of status) 
    List<String> product (id of product) 

我從前方得到帶有商業ID列表的dtoFilter,帶有枚舉狀態的字符串列表以及帶有產品ID的字符串列表。我尋找所有與商品相關的「機會」(AND)

有人可以幫助我完成搜索查詢。

謝謝

回答

0

您可以$or標準爲每個文件。

喜歡的東西

@Override 
public List<Oportunidad> getOportunidads(DtoFilter dtoFilter) { 
    List<String> commercial = dtoFilter.getCommercial(); 
    List<String> statu = dtoFilter.getStatu(); 
    List<String> product = dtoFilter.getProduct(); 
    List<Criteria> andCriteria = new ArrayList<>(); 
    for(int i=0; i < commercial.size(); i++) { 
     andCriteria.add(Criteria.where("commercial").is(commercial.get(i)).and("statu").is(statu.get(i)).and("product").is(product.get(i))); 
    } 
    Criteria orCriteria = new Criteria().orOperator(andCriteria.toArray(new Criteria[andCriteria.size()])); 
    return mongoTemplate.find(new Query().addCriteria(orCriteria), Oportunidad.class); 
} 
+0

很抱歉,但 「mongoOperations」 是什麼,我如何對其進行實例化 –

+0

對不起了'mongoTemplate'。更新。 – Veeram