Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 分面分类-Spring数据Mongo_Java_Spring_Mongodb_Spring Data_Spring Data Mongodb - Fatal编程技术网

Java 分面分类-Spring数据Mongo

Java 分面分类-Spring数据Mongo,java,spring,mongodb,spring-data,spring-data-mongodb,Java,Spring,Mongodb,Spring Data,Spring Data Mongodb,我试图使用SpringDataMongo构建一个刻面分类,但我对如何使用Aggregation.facet方法感到困惑 当我试图弄清楚这个东西是如何工作的时候,我使用了两次相同的FaceOperation,我得到了一个java.lang.IllegalArgumentException:Invalid reference“producer.fundings”。这个facet操作单独在聚合中运行良好 FacetOperation fo1 = facet( unwind("produ

我试图使用SpringDataMongo构建一个刻面分类,但我对如何使用
Aggregation.facet
方法感到困惑

当我试图弄清楚这个东西是如何工作的时候,我使用了两次相同的
FaceOperation
,我得到了一个
java.lang.IllegalArgumentException:Invalid reference“producer.fundings”。这个
facet操作
单独在
聚合
中运行良好

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();
facet操作fo1=facet(
平仓(“生产商资金”),
project()和(“producer.fundings.type”).as(“type”)和(“producer.fundings.acronym”).as(“name”),
组(“名称”、“类型”).count().as(“计数”),
项目(“计数”)和(“id.name”)作为(“名称”)和(“id.type”)作为(“类型”)并排除(“id”)
).as(“基金公司”);
facet操作fo2=facet(
平仓(“生产商资金”),
project()和(“producer.fundings.type”).as(“type”)和(“producer.fundings.acronym”).as(“name”),
组(“名称”、“类型”).count().as(“计数”),
项目(“计数”)和(“id.name”)作为(“名称”)和(“id.type”)作为(“类型”)并排除(“id”)
).as(“基金名称方面”);
Aggregation agg=Aggregation.newAggregation(fo1,fo2);
AggregationResults groupResults=mongoTemplate.aggregate(agg,“观察”,FacetClassification.class);
List facet=groupResults.getMappedResults();
所以要么我没有很好地使用facet方法,只需要一个调用就可以创建不同的facet。这与MongoDB API中的实现方式类似: 或者我需要链接
facet
调用来创建分类的不同facet,并且需要知道在第一次调用之后发生了什么,以及为什么找不到完全相同的引用

文档仅提供创建一个方面的示例,在其他地方找不到任何示例:

有关:


任何帮助都将不胜感激

您可以使用
和()。示例应如下所示,以便在同一聚合操作中创建两个不同的方面:

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")
        .and(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("fundingNamesFacet"); 

您可以使用
和()。示例应如下所示,以便在同一聚合操作中创建两个不同的方面:

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")
        .and(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("fundingNamesFacet");