mongoTemplate - findDistinct 使用
场景
使用 findDistinct 统计订单数
api:
@Override
public <T> List<T> findDistinct(Query query, String field, Class<?> entityClass, Class<T> resultClass) {
return findDistinct(query, field, getCollectionName(entityClass), entityClass, resultClass);
}
参数:
- 查询
- 唯一字段
- 文档
- 返回结果类型
List<String> list = mongoTemplate.findDistinct(query, "orderId", OrderDocument.class, String.class);
在使用 distinct 时报错:
readString can only be called when CurrentBSONType is STRING, not when CurrentBSONType is INT32
原因
orderId 字段在定义时为 Integer 类型,所以会报类型转换失败
解决方案
List<Integer> list = mongoTemplate.findDistinct(query, "orderId", OrderDocument.class, Integer.class);