有人可以帮我创建一个查询(Mongo),使用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的字符串列表。我寻找所有的机会&#34;与列表(AND)
重合有人可以帮我解决搜索问题。
谢谢
答案 0 :(得分: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);
}