訪問計算值,我有旅行的集合,每行有一個的startDateTime和completionDateTime財產。春數據MongoDB的聚合框架,例外
我試圖使用聚合框架來找到用戶的出行的平均持續時間。
我的聚集看起來非常簡單,但和它拋出一個異常。
有以下3個步驟,第一隻匹配前往特定的用戶ID。 在管道的第二步中,我會將我感興趣的數據以及每次旅程的新計算持續時間進行投影。
我預計從投影的持續時間是在人羣一步,但是我得到以下IllegalArgumentException異常。 持續時間不是我的Trip類中的屬性,而是來自我在文檔中看到的例子,我不認爲它需要。 持續時間是我的分析類的一個屬性。
TypedAggregation<Trip> aggregation = newAggregation(Trip.class,
match(Criteria.where("userId").is(aUserId)),
project("completionDateTime", "startDateTime", "userId")
.and("completionDateTime").minus("startDateTime").as("duration"),
group("userId").avg("duration").as("averageDuration")
);
AggregationResults<Analytics> result = mongoTemplate.aggregate(aggregation, Analytics.class);
我相信,持續時間越來越計算正確,如果我離開了組一步我回來的文檔的集合,它們都具有持續時間設置。
java.lang.IllegalArgumentException: Invalid reference 'duration'!
at org.springframework.data.mongodb.core.aggregation.ExposedFieldsAggregationOperationContext.getReference(ExposedFieldsAggregationOperationContext.java:78)
at org.springframework.data.mongodb.core.aggregation.GroupOperation$Operation.getValue(GroupOperation.java:367)
at org.springframework.data.mongodb.core.aggregation.GroupOperation$Operation.toDBObject(GroupOperation.java:363)
at org.springframework.data.mongodb.core.aggregation.GroupOperation.toDBObject(GroupOperation.java:308)
at org.springframework.data.mongodb.core.aggregation.Aggregation.toDbObject(Aggregation.java:247)
我使用1.3.4.RELEASE
有什麼建議?
你能準確地用更新的問題,你怎麼跑了企圖對1.4以及是否得到了確切的相同的異常(如你不能包括你得到的那個嗎?) –
@AsyaKamsky我使用完全相同的代碼,並得到了與1.4.1.RELEASE – DannyLane