使用MongoTemplate获取排序的不同值 [英] Get sorted distinct values with MongoTemplate

查看:1600
本文介绍了使用MongoTemplate获取排序的不同值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试获取已排序的不同字段的列表:

I am trying to get list of sorted distinct fields:

public List<Object> getDistinctValues(String collection, String fieldName) {
    Query query = new Query();
    query.with(new Sort(Sort.Direction.ASC, fieldName));
    return mongoTemplate.findDistinct(query, fieldName, collection, Object.class);
}

,但不应用排序. 有没有办法用mongoTemplate做到这一点?

but sorting isn't applied. Is there any way to do it with mongoTemplate?

spring-boot-starter-data-mongodb: 2.1.2.RELEASE

spring-boot-starter-data-mongodb: 2.1.2.RELEASE

推荐答案

基于先前的答案,我解决了Mongo Aggregation的问题:

Based on previous answer I solved my problem with Mongo Aggregation:

@Override
public List<Object> getDistinctValues(String collection, String fieldName, Sort.Direction sort) {
    Aggregation agg = Aggregation.newAggregation(
            Aggregation.group(fieldName),
            Aggregation.sort(sort, "_id")
    );
    return mongoTemplate.aggregate(agg, collection, Document.class)
            .getMappedResults()
            .stream()
            .map(item -> item.get("_id"))
            .collect(Collectors.toList());
}

希望对某人有帮助.

这篇关于使用MongoTemplate获取排序的不同值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆