MongoSpring 数据 Mongo 中的数据库自定义查询

MongoDB custom Query in Spring Data Mongo

有人可以帮我做一个查询(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();

}

实体(Mongo数据库):

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

要过滤:

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

我从前面得到一个带有商业 ID 列表的 dtoFilter,一个带有状态枚举的字符串列表和一个带有产品 ID 的字符串列表。我寻找与列表一致的所有 "Opportunities" (AND)

有人可以帮助我进行搜索查询。

谢谢

您可以$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);
}