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);