Spring data mongodb собирает отдельные вложенные коллекции — настройка производительности

#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 секунды, оба медленные с точки зрения производительности.