Java 如何实现mongoTemplate.findDistinct()?

Java 如何实现mongoTemplate.findDistinct()?,java,mongodb,mongodb-query,mongotemplate,Java,Mongodb,Mongodb Query,Mongotemplate,我试图从mongoTemplate使用findDistinct函数,但我总是检索一个空的结果列表。 你能帮我找出这个问题吗?或者你有一个最简单的方法 注意: 我的收藏中确实有数据 (在一个基本查找中,我在列表中获取了300多个结果,但所有这些结果都是相同的,除了一个键,例如,我希望所有不同的对象都与它们的名称值不同) 我试着这样做: List<DiffusionListImpl> list = new ArrayList<>(); try{ qu

我试图从mongoTemplate使用findDistinct函数,但我总是检索一个空的结果列表。 你能帮我找出这个问题吗?或者你有一个最简单的方法

注意: 我的收藏中确实有数据 (在一个基本查找中,我在列表中获取了300多个结果,但所有这些结果都是相同的,除了一个键,例如,我希望所有不同的对象都与它们的名称值不同)

我试着这样做:

List<DiffusionListImpl> list = new ArrayList<>();

    try{
        query = new Query(Criteria.where("CUSTOMERNUMBER").is(1));
        list = mongoTemplate.findDistinct(query, KeyWhereIWantTheDistinct, collectionName,
                KlassResultModel.class);
    } catch (MongoException e) {
        logger.error("MongoException: " + e);
    } catch (Exception e) {
        logger.error("Error: " + e);
    }
    return list;
List List=new ArrayList();
试一试{
查询=新查询(条件。其中(“CUSTOMERNUMBER”)。为(1));
list=mongoTemplate.findDistinct(查询,关键字,其中我想要区分,集合名称,
KlasResultModel.class);
}捕获(MongoException e){
记录器错误(“MongoException:+e”);
}捕获(例外e){
记录器错误(“错误:+e”);
}
退货清单;

我的错,我误读了文档

但我觉得有这样的功能是很好的。 我必须调用数据库来获取一个不同值的列表,然后再调用同一个数据库来检索对象


有没有办法一个电话就搞定?(性能问题)

我的错,我误读了文档

但我觉得有这样的功能是很好的。 我必须调用数据库来获取一个不同值的列表,然后再调用同一个数据库来检索对象


有没有办法一个电话就搞定?(性能问题)

可以在一个DB调用中完成,请使用以下代码

 final List<DiffusionListImpl> result =
        IteratorUtils.toList(this.mongoTemplate.getCollection("collectionName")
            .distinct("fieldName", query.getQueryObject(), DiffusionListImpl.class)
            .iterator());
最终列表结果=
IteratorUtils.toList(this.mongoTemplate.getCollection(“collectionName”)
.distinct(“字段名”,query.getQueryObject(),DiffusionListImpl.class)
.iterator());
对于IteratorUtils,您可以使用apache

import org.apache.commons.collections4.IteratorUtils

可以在一个DB调用中完成,请使用下面的代码

 final List<DiffusionListImpl> result =
        IteratorUtils.toList(this.mongoTemplate.getCollection("collectionName")
            .distinct("fieldName", query.getQueryObject(), DiffusionListImpl.class)
            .iterator());
最终列表结果=
IteratorUtils.toList(this.mongoTemplate.getCollection(“collectionName”)
.distinct(“字段名”,query.getQueryObject(),DiffusionListImpl.class)
.iterator());
对于IteratorUtils,您可以使用apache

import org.apache.commons.collections4.IteratorUtils

我让它工作了,但是现在,返回列表包含了我想要的区分键,而不是我让它工作的模型KlasResultModel,但是现在,返回列表包含了我想要的区分键,而不是模型KlasResultModel