组聚合中的MongoDb自定义累加器

组聚合中的MongoDb自定义累加器,mongodb,Mongodb,我试图在Mongo聚合管道的$group中使用自定义累加器($acculator)。我的记录很简单:它们有多个上传日期和一些用户帖子。在一个给定的上传日期可能有多个帖子。 例如,如果我有以下文件: Date of Upload: 15/08/2020, Post: "Aaaaaaaaaaaaaaaaa" Date of Upload: 15/08/2020, Post: "Bbbbbbbbbbbbbbbb" Date of Upload: 14/08/

我试图在Mongo聚合管道的$group中使用自定义累加器($acculator)。我的记录很简单:它们有多个上传日期和一些用户帖子。在一个给定的上传日期可能有多个帖子。 例如,如果我有以下文件:

Date of Upload: 15/08/2020, Post: "Aaaaaaaaaaaaaaaaa" 
Date of Upload: 15/08/2020, Post: "Bbbbbbbbbbbbbbbb" 
Date of Upload: 14/08/2020, Post: "Cccccccccccccccccc" 
Date of Upload: 12/08/2020, Post: "Ddddddddddddddddd" 
然后在结果中,我想得到“aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa。使用$first只会给我一个文档。我的目标是找出数据库中从给定日期开始的所有最新帖子,即最多一天的帖子。我尝试使用以下命令,但它不起作用:

{
  _id: null,
  maxDate: {
    $max: '$Date Of Upload'
  },
  docs: {
    $accumulator: {
      init: function(){ return {docs: []}}
      accumulate: function(state, doc,maxDate){
        if (doc."Date Of Upload" == maxDate){
          state.docs.push(doc);
        }
        return state;
      }
      
      accumulateArgs: ['$$ROOT', '$maxDate'],
      finalize: function(state){
        return state.docs
      }
    }
  }
}

有人能帮我修一下吗?作为一种解决方法,我将所有文档从$group阶段推送到一个数组中,然后执行$unwind,然后执行$match。有更好的方法吗?

我不明白为什么简单的$max ot$first不起作用。请给我们2-3份样品文件和预期结果。这只给了我一份文件。例如,如果我有如下文件:上传日期:2020年8月15日,发布:“aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbb”上传日期:2020年8月14日,发布:“CCCCCCCCCCCC”上传日期:2020年8月12日,发布:“dddddddddddddddddddddddddddddddd。使用$first只会给我一个文档。请编辑您的问题,而不是将其他信息作为注释。希望我的问题现在更好。