Группировка по свойствам с использованием репозитория mongo

В своем проекте я использую репозиторий Java Spring MongoDB.

У меня есть эта коллекция в MongoDB под названием Info:

{ "_id" : 1, "hosting" : "hostgator.com", count:7 }
{ "_id" : 2, "hosting" : "aws.amazon.com", count:7}
{ "_id" : 3, "hosting" : "aws.amazon.com", count:3}
{ "_id" : 4, "hosting" : "hostgator.com", count:5 }
{ "_id" : 5, "hosting" : "aws.amazon.com", count:1 }
{ "_id" : 6, "hosting" : "cloud.google.com", count:1 }
{ "_id" : 7, "hosting" : "aws.amazon.com", count:5 }
{ "_id" : 8, "hosting" : "hostgator.com", count:2 }
{ "_id" : 9, "hosting" : "cloud.google.com", count:3 }
{ "_id" : 10,"hosting" : "godaddy.com", count:7 }
...
{ "_id" : 100, "hosting" : "godaddy.com", count:5 }

Вот определение DTO:

public class Info{
    public int _id;
    public String hosting;
    public int count;
}

Мне нужно написать запрос и получить из базы данных все значения свойства count и удалить дубликаты.
Например, результат, который я ожидаю в соответствии с приведенной выше коллекцией, таков:

List<int> counts = [1,2,3,5,7];

Для этого я использую метод группы агрегации и MongoTemplate:

        GroupOperation groupOperation = Aggregation.group("count");
        Aggregation aggregation = Aggregation.newAggregation(groupOperation);
        var result = template.aggregate(aggregation, Info.class,  Info[].class);
        System.out.println(result.getMappedResults());

Но в результате я получаю пустой массив - [].

Не могли бы вы помочь мне с запросом выше, почему я не получаю ожидаемого результата?


person Michael    schedule 11.03.2021    source источник
comment
см. stackoverflow.com/a/46890137/2282634. Вы должны сгруппировать по хостингу и использовать $first, чтобы получить единый счет.   -  person Joe    schedule 11.03.2021
comment
Отвечает ли это на ваш вопрос? Spring mongodb - групповая операция после раскрутки - не удается найти $first или $push   -  person Joe    schedule 11.03.2021
comment
Вы можете попробовать этот запрос данных Spring: #66423381">Как написать запрос для получения различных значений из коллекции mongodb?   -  person prasad_    schedule 11.03.2021
comment
@прасад_ потрясающе! Работает идеально спасибо! В случае, если я хочу добавить фильтр по какому-либо свойству, например, где размещено значение, специфичное для свойства, как я могу добавить его в аннотацию?   -  person Michael    schedule 11.03.2021
comment
Вы можете добавить этап $match перед этапом $group. См. примеры использования нескольких этапов конвейера в Spring Data MongoDB — @Совокупность .   -  person prasad_    schedule 11.03.2021