无效引用'_id';!spring数据mongodb中出错

无效引用'_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")

我已经在SpringDataMongoDB中编写了聚合查询。在投影步骤中,我想使用“_id”字段,但它给出了错误

我的放映舞台:

  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 
         }
     }   
])