无效引用'_id';!spring数据mongodb中出错
我已经在SpringDataMongoDB中编写了聚合查询。在投影步骤中,我想使用“_id”字段,但它给出了错误 我的放映舞台:无效引用'_id';!spring数据mongodb中出错,mongodb,spring-data,aggregation-framework,spring-data-mongodb,Mongodb,Spring Data,Aggregation Framework,Spring Data Mongodb,我已经在SpringDataMongoDB中编写了聚合查询。在投影步骤中,我想使用“_id”字段,但它给出了错误 我的放映舞台: private ProjectionOperation getProjectionForStartAndEndTime(long timeUnit) { return Aggregation.project() .and(Fields.UNDERSCORE_ID) .as("startTime")
private ProjectionOperation getProjectionForStartAndEndTime(long timeUnit) {
return Aggregation.project()
.and(Fields.UNDERSCORE_ID)
.as("startTime")
.and(Add.valueOf(Fields.UNDERSCORE_ID).add(timeUnit))
.as("endTime")
.andInclude("successfulActivitiesCount", "failedActivitiesCount",
"heartBeatFailuresCount");
}
在此之前,我有一个桶阶段,我怀疑这是否是原因
private BucketOperation getBucketOperation(TimeGroupType timeGroupType, long startTime, long endTime) {
List<Long> timeIntervalList = getBoundariesForAggregating(timeGroupType, startTime, endTime);
return bucket(ActivityHistoryEntityKeys.activityTime)
.withBoundaries(timeIntervalList.toArray())
.andOutput(isSuccessfulActivityField)
.sum()
.as(NGActivitySummaryKeys.successfulActivitiesCount)
.andOutput(isFailedActivityField)
.sum()
.as(NGActivitySummaryKeys.failedActivitiesCount)
.andOutput(isConnectivityFailureField)
.sum()
.as(NGActivitySummaryKeys.heartBeatFailuresCount);
}
\u id
字段将始终存在于文档中,那么为什么它会给出无效引用
我认为spring data MongoDB中也存在类似的错误,但该问题在1.4.1中得到了修复,我使用的是2.2.7。
很抱歉,我无法生成准确的聚合查询,因为代码本身正在失败
我在MongoDB shell上一步一步地尝试了这个项目,结果通过了。因此,在我看来,这似乎是我编写的spring数据代码中的一个问题
请建议我如何解决这个问题
附加服务:
我的记录看起来像:
/* 1 */
{
"_id" : ObjectId("5f92caaab3823704a346766b"),
"accountIdentifier" : "accountIdentifier",
"type" : "ENTITY_USAGE", //other value is `CONNECTIVITY_CHECK`
"activityStatus" : "SUCCESS",
"activityTime": 1603115723209
}
monogodb查询的工作原理是:
db.getCollection('entityActivity').aggregate([
{
"$bucket" :
{
"boundaries" : [1603115723209, 1603202123209, 1603288523209,1603374923209,1603461323209,1603547723209],
"default": 0,
"groupBy" : "$activityTime",
"output" : {
"successfulActivitiesCount" : { "$sum" : "$isSuccessfulActivity"},
"failedActivitiesCount" : { "$sum" : "$isFailedActivity"},
"heartBeatFailuresCount" : { "$sum" : "$isConnectivityFailure"}
}
}
},
{
"$project":
{
"startTime": "$_id",
"successfulActivitiesCount": 1
}
}
])
db.getCollection('entityActivity').aggregate([
{
"$bucket" :
{
"boundaries" : [1603115723209, 1603202123209, 1603288523209,1603374923209,1603461323209,1603547723209],
"default": 0,
"groupBy" : "$activityTime",
"output" : {
"successfulActivitiesCount" : { "$sum" : "$isSuccessfulActivity"},
"failedActivitiesCount" : { "$sum" : "$isFailedActivity"},
"heartBeatFailuresCount" : { "$sum" : "$isConnectivityFailure"}
}
}
},
{
"$project":
{
"startTime": "$_id",
"successfulActivitiesCount": 1
}
}
])