В своем проекте я использую репозиторий 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());
Но в результате я получаю пустой массив - [].
Не могли бы вы помочь мне с запросом выше, почему я не получаю ожидаемого результата?
$match
перед этапом$group
. См. примеры использования нескольких этапов конвейера в Spring Data MongoDB — @Совокупность . - person prasad_   schedule 11.03.2021