mongodb - Spring Data MongoDB - 聚合框架 - 组操作中的无效引用

标签 mongodb spring-data

我使用 Spring Data (1.3.0.RC1) 访问我们的 MongoDB,对于一些新查询,我想使用聚合框架。

在 mongo shell 中,命令是:

db.spotreports.aggregate(
 { "$unwind" : "$pd"} , { "$group" : { "_id" : "$pd.PDch", "base" : {$sum : "$pd.aBL"}, "uplift" : {$sum : "$pd.up"}}})
{
"result" : [
{
"_id" : 5,
"base" : 529133,
"uplift" : 21516
},
...

我使用的 Spring 代码是:

Aggregation agg = Aggregation.newAggregation(
Aggregation.unwind("pd"),
Aggregation.group("pd.PDch").sum("pd.aBL").as("base").sum("pd.up").as("uplift")
);

AggregationResults<SpotReportResult> result = mongoTemplate.aggregate(agg, resolveCollection(), SpotReportResult.class);

我收到以下错误:

java.lang.IllegalArgumentException: Invalid reference 'PDch'!
at org.springframework.data.mongodb.core.aggregation.ExposedFieldsAggregationOperationContext.getReference(ExposedFieldsAggregationOperationContext.java:63)
at org.springframework.data.mongodb.core.aggregation.ExposedFieldsAggregationOperationContext.getReference(ExposedFieldsAggregationOperationContext.java:47)
at org.springframework.data.mongodb.core.aggregation.GroupOperation.toDBObject(GroupOperation.java:284)
at org.springframework.data.mongodb.core.aggregation.Aggregation.toDbObject(Aggregation.java:228)

我想知道为什么 spring 要引用“PDch”而不是“pd.PDch”?

最佳答案

根据 DATAMONGO-753这应该在最新的快照中得到修复,并随即将发布的 1.3.2 错误修复版本和即将发布的 Spring Data MongoDB 1.4 M1 一起发布。

关于mongodb - Spring Data MongoDB - 聚合框架 - 组操作中的无效引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18653574/

相关文章:

mongodb - Liberty + Spring Data 中的容器管理的 MongoDB 连接

spring-data - Spring Data Cassandra中的分页和排序查询

c# - MongoDB .Net 驱动 2.0 拉取(移除元素)

node.js - 如何在mongodb中查找一个对象

java - 如何使用 Spring-data-elastic 查询 Elastic

redis - Spring Data Redis 和 Jedis 兼容性问题

spring-data-jpa - 是否有不等于条件的ExampleMatcher

java - 持久对象的历史、差异和恢复

python - 使用 Python 从 AWS Lambda 连接到 DocumentDB

arrays - 在mongodb中更新数组中的多个元素