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