汇总链接文档的组数据

时间:2015-11-12 08:48:39

标签: node.js mongodb mongoose

我们目前有以下代码按照创建日期对集合中的所有文档进行分组:

this.aggregate( [
        { $match: { language: options.criteria.language, status: 1, type:{ $ne: "challenge" } }},
      { $group: {
          _id: {
              y: { '$year': '$created' },
              m: { '$month': '$created' },
              d: { '$dayOfMonth': '$created' },
              h: { '$hour': '$created' },
              min: { '$minute': '$created' },
              s: { '$second': '$created' }
          },
          count: { $sum : 1 }
        }},
        {$project: {
            date: "$_id", // so this is the shorter way
            count: 1,
            _id: 0
        }},
        { $sort: { "date": 1 } }

    ], function(err, result){

        if(err) {
          return callback(err);
        }


        callback(null, result);
    });

但是,我们现在希望根据开始日期而不是创建日期对结果进行分组。开始日期不是当前集合的字段,但它是currentRevision对象的字段,在此集合中链接。

我试过了:

this.aggregate( [
        { $match: { language: options.criteria.language, status: 1, type:{ $ne: "challenge" } }},
      { $group: {
          _id: {
              y: { '$year': '$currentRevision.start_date' },
              m: { '$month': '$currentRevision.start_date' },
              d: { '$dayOfMonth': '$currentRevision.start_date' },
              h: { '$hour': '$currentRevision.start_date' },
              min: { '$minute': '$currentRevision.start_date' },
              s: { '$second': '$currentRevision.start_date' }
          },
          count: { $sum : 1 }
        }},
        {$project: {
            date: "$_id", // so this is the shorter way
            count: 1,
            _id: 0
        }},
        { $sort: { "date": 1 } }

    ], function(err, result){

        if(err) {
          return callback(err);
        }


        callback(null, result);
    });

但这只是给了我一个错误:"无法查询db"

关于如何解决这个问题的任何想法?

0 个答案:

没有答案