Mongodb Spring data mongo:当路径包含HashMap的键时,投影不起作用 问题

Mongodb Spring data mongo:当路径包含HashMap的键时,投影不起作用 问题,mongodb,spring-boot,aggregation-framework,spring-data-mongodb,mongotemplate,Mongodb,Spring Boot,Aggregation Framework,Spring Data Mongodb,Mongotemplate,当我试图投射java.util.Map中的值时,我得到下面的异常。但是当我在roboMongo中运行生成的shell查询时,它就可以工作了。如果有人能指出这个问题,我将不胜感激 org.springframework.data.mapping.context.InvalidPersistentPropertyPath: No property Germany found on com.nntn.corona.snapshot.repo.model.StatWithDelta! Java中的查询

当我试图投射
java.util.Map
中的值时,我得到下面的异常。但是当我在roboMongo中运行生成的shell查询时,它就可以工作了。如果有人能指出这个问题,我将不胜感激

org.springframework.data.mapping.context.InvalidPersistentPropertyPath: No property Germany found on com.nntn.corona.snapshot.repo.model.StatWithDelta!
Java中的查询代码 spring启动父项:2.0.5.0版本

Criteria matchCriteria = Criteria.where("timestamp").gte(startDate);
        MatchOperation match = Aggregation.match(matchCriteria);
        SortOperation sort = sort(new Sort(Sort.Direction.ASC, "timestamp"));

        // @formatter:off
        ProjectionOperation projection = project()
                .andExpression("timestamp").as("timestamp")
                .andExpression("countries.germany.total").as("total")
                .andExpression("countries.germany.today").as("today");
        // @formatter:on

        Aggregation aggregation = newAggregation(match, sort,projection);

        AggregationResults<Document> result = mongoTemplate.aggregate(aggregation, SnapshotEntry.class,
                Document.class);
        return result.getMappedResults();
问题出在你身上。这是一种特殊的聚合,其中Spring保存输入聚合类型的信息

要避免这种情况,请使用原始聚合(就像在MongoDB shell中运行一样):

AggregationResults<SnapshotEntry> result = mongoTemplate.aggregate(aggregation, 
            mongoTemplate.getCollectionName(SnapshotEntry.class),
            SnapshotEntry.class);
AggregationResults=mongoTemplate.aggregate(聚合,
mongoTemplate.getCollectionName(SnapshotEntry.class),
SnapshotEntry.class);
问题出在。这是一种特殊的聚合,其中Spring保存输入聚合类型的信息

要避免这种情况,请使用原始聚合(就像在MongoDB shell中运行一样):

AggregationResults<SnapshotEntry> result = mongoTemplate.aggregate(aggregation, 
            mongoTemplate.getCollectionName(SnapshotEntry.class),
            SnapshotEntry.class);
AggregationResults=mongoTemplate.aggregate(聚合,
mongoTemplate.getCollectionName(SnapshotEntry.class),
SnapshotEntry.class);

非常感谢@Valijon。这就解决了问题非常感谢您@Valijon。这就解决了问题
AggregationResults<SnapshotEntry> result = mongoTemplate.aggregate(aggregation, 
            mongoTemplate.getCollectionName(SnapshotEntry.class),
            SnapshotEntry.class);