MongoDB - 试图让它从星期一开始计数时的$ week聚合器错误,而不是星期日

时间:2016-10-29 22:09:05

标签: javascript node.js mongodb mongodb-query

在mongoDB聚合器中,当我尝试按“$ week”'$'分组数据以显示每周比较和统计数据时,我遇到了$ week聚合器在星期日而不是星期一开始的问题所以所有数据都得到了歪了一天。

在这种情况下,我尝试分组的特定日期字段称为“dateWorked”。

当我尝试修复此问题时,通过从“dateWorked”中减去一天,日期会得到调整,但其余的数据未正确分组。所有'$ sum'运算符在它们应该添加的数字时返回零。下面是我正在使用的查询和示例json数据。

我也试过实现这个解决方案here,但它有同样的问题。我的其他数据都没有“$ sum” - 正确。关于如何解决这个问题的任何想法?

Timesheet.aggregate([
    {$match: {
            'userInfo.sub': req.params.id
        }
    },
    {$project: {
        dateWorked: {$subtract: [ "$dateWorked", 24 * 60 * 60 * 1000]}
    }
    },
    {"$sort": {dateworked:1}},
    {$group: {
            _id: {$week: '$dateWorked'},
            weekOf: {$push: '$dateWorked'},
            docCount: {$sum: 1},
            dev: {$sum: '$dev'},
            qa: {$sum: '$qa'},
            admin: {$sum: '$admin'},
            other: {$sum: '$other'},
            rd: {$sum: '$rd'},
            total: {$sum: {$add: ['$rd', '$other', '$admin', '$qa', '$dev']}}
        }
   }
], function(err, data) {
    if (err) return next(err);
    res.json(data);
});

我想要聚合的数据样本:

  {
      "_id": "5812542902e5d2ab017fe918",
      "dev": 2,
      "qa": 1,
      "rd": 2,
      "other": 4,
      "admin": 0,
      "dateWorked": "2016-10-04T04:00:00.000Z",
      "userInfo": {
          "name": "test1"
      }
    },
    {
      "_id": "5812542902e5d2ab017fe919",
      "dev": 2,
      "qa": 1,
      "rd": 2,
      "other": 4,
      "admin": 0,
      "dateWorked": "2016-10-03T04:00:00.000Z",
      "userInfo": {
        "name": "test2"
      }
  },

0 个答案:

没有答案