#java #spring-boot #mongodb-query #spring-data-mongodb
#java #весенняя загрузка #mongodb-запрос #spring-data-mongodb
Вопрос:
[
{
"categories":{
"category":[
"sub1",
"sub2",
"sub3"
],
"category2":[
"sub1",
"sub2"
]
}
},
{
"categories":{
"category":[
"sub1",
"sub4"
],
"category2":[
"sub5",
"sub4"
]
}
}
]
хотите получить отдельную категорию и категорию2, используя весенние данные. Я пробовал как агрегацию, так и Distinct, оба замедляют производительность, я надеюсь, что я что-то упускаю
Агрегация:
AggregationResults<Category> results = mongoTemplate.aggregate(Aggregation.newAggregation(Aggregation.group(categoryFields.stream().toArray(String[]::new))),"recipe",Category.class );
Различные:
categoryFields.stream().forEach(cat -> {
categories.put(cat, mongoTemplate.findDistinct(query, "categories." cat, "recipe", Recipe.class, Category.class));
});
Агрегирование занимает 11 секунд, а разделение — 3 секунды, оба медленные с точки зрения производительности.