mongodb - 集合为空时的spring-data-mongodb计数错误
问题描述
这两个查询有什么区别?
此查询在集合上存在或不存在值时都有效。
@Query(value = "{'request.req_number':?0, 'product.prod_number':?1}", count = true)
int myMethod(String requestNumber, String productNumber){...
但是,当集合为空时,这会导致 Nullpointer。
@Aggregation(pipeline = {"{'$match':{'request.req_number':?0, 'product.prod_number':?1} }","{'$count':'total'}"})
int myMethod(String requestNumber, String productNumber){...
java.lang.NullPointerException:在 org.springframework.data.mongodb.repository.query.AggregationUtils.extractSimpleTypeResult 处为空(AggregationUtils.java:192)~[spring-data-mongodb-2.2.1.RELEASE.jar:2.2.1。 RELEASE] 在 org.springframework.data.mongodb.repository.query.StringBasedAggregation.doExecute(StringBasedAggregation.java:114) ~[spring-data-mongodb-2.2.1.RELEASE.jar:2.2.1.RELEASE]
解决方案
聚合返回“对象”你应该使用这样的东西:
@Data
@AllArgsConstructor
class Count {
Long total;
}
...
@Aggregation(pipeline = {"{'$match':{'request.req_number':?0, 'product.prod_number':?1} }","{'$count':'total'}"})
Count myMethod(String requestNumber, String productNumber){...
推荐阅读
- c# - 基于PK-ASP.NET从多个表中选择数据
- php - PHP 代码已替换为 '0000 0000 0000 0000....'
- python - Conda 环境与第三方软件冲突
- amazon-web-services - 在 aws 和 gcp 之间 Ping
- ansible - 使用列表变量通过 apt 安装软件列表
- php - 如何按照条件在表格中划线?
- reactjs - 使用 react-native-svg 的不变违规
- c++ - 当这段代码执行时,它没有显示输出。这是为什么?
- here-api - Here Fleet Telematics CalculateRoute 服务无法使用 api 密钥访问
- python - 为什么 PyPy 中没有名为 queue 的模块?