springboot 查询mongodb: 使用以下参数查询:{ "enterpriseId": "100001707", "bindingParams": [ { "batchNo": "Y0608", "goodsCode": "10074616", "traceCode":"88.386.652/020018601010000000002991234" }, { "batchNo": "Y0608", "goodsCode": "10074616" } ] }
时间: 2023-07-19 12:43:48 浏览: 48
假设你的实体类为 `MyEntity`,包含以下字段:`enterpriseId`,`batchNo`,`goodsCode`,`traceCode`,你可以使用以下代码实现查询:
```java
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import java.util.List;
...
@Autowired
private MongoTemplate mongoTemplate;
...
String enterpriseId = "100001707";
List<MyEntity> bindingParams = List.of(
new MyEntity("Y0608", "10074616", "88.386.652/020018601010000000002991234"),
new MyEntity("Y0608", "10074616", null)
);
Query query = new Query();
Criteria criteria = Criteria.where("enterpriseId").is(enterpriseId);
Criteria[] bindingParamsCriteria = bindingParams.stream()
.map(params -> {
Criteria criteria1 = Criteria.where("batchNo").is(params.getBatchNo())
.and("goodsCode").is(params.getGoodsCode());
if (params.getTraceCode() != null) {
criteria1.and("traceCode").is(params.getTraceCode());
}
return criteria1;
})
.toArray(Criteria[]::new);
criteria.andOperator(bindingParamsCriteria);
query.addCriteria(criteria);
List<MyEntity> result = mongoTemplate.find(query, MyEntity.class);
```
这个示例中,我们使用了 `Criteria` 对象来构建查询条件,其中 `where` 方法指定了字段名和值,`and` 方法用来连接多个条件。我们使用了 `stream` 和 `map` 方法遍历 `bindingParams` 列表,将每个元素转换成一个 `Criteria` 对象,并使用 `andOperator` 方法将这些条件组合成一个整体。
最后,我们将这个查询条件添加到 `Query` 对象中,并使用 `MongoTemplate` 的 `find` 方法执行查询,将结果转换成 `MyEntity` 类型的对象列表。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)