Я пытаюсь построить граненую классификацию, используя Spring Data Mongo, и я не понимаю, как использовать метод Aggregation.facet
.
Поскольку я пытаюсь понять, как это работает, я 'м, используя дважды тот же FacetOperation
, и я получаю java.lang.IllegalArgumentException: Invalid reference 'producer.fundings'!
.Этот FacetOperation
один в Aggregation
работает отлично!
FacetOperation fo1 = facet(
unwind("producer.fundings"),
project().and("producer.fundings.type").as("type").and("producer.fundings.acronym").as("name"),
group("name", "type").count().as("count"),
project("count").and("_id.name").as("name").and("_id.type").as("type").andExclude("_id")
).as("fundingAcronymFacet");
FacetOperation fo2 = facet(
unwind("producer.fundings"),
project().and("producer.fundings.type").as("type").and("producer.fundings.acronym").as("name"),
group("name", "type").count().as("count"),
project("count").and("_id.name").as("name").and("_id.type").as("type").andExclude("_id")
).as("fundingNameFacet");
Aggregation agg = Aggregation.newAggregation(fo1,fo2);
AggregationResults<FacetClassification> groupResults = mongoTemplate.aggregate(agg, "observations", FacetClassification.class);
List<FacetClassification> facet = groupResults.getMappedResults();
Так что либо я не очень хорошо использую метод фасетов, и для создания другого фасета требуется только один вызов.Это будет выглядеть примерно так, как это реализовано в MongoDB API: $ facet (агрегат) Или мне нужно связать facet
вызов для создания различных аспектов моей классификации и узнать, что происходит после первогоcall и почему точно такая же ссылка не найдена.
Документация содержит только примеры, которые создают один аспект и не могут найти другой пример в другом месте: Spring Data Mongo Faceted Classification .
относится к: Использование нескольких аспектов в данных Spring MongoDB
Любая помощь приветствуется!