MongoDB按日期分组并填写零计数

时间:2016-06-17 14:00:13

标签: mongodb mongoose

我想按日期对搜索结果进行分组。然后还计算结果。

var fromDate = new Date(req.query.fromDate);
var toDate = new Date(req.query.toDate);

global.databaseStatistic.collection(global.ARTICLEPRESS).aggregate([
    {
        $match: {
            article: { $in: articleIdArray },
            date: { $gte: fromDate, $lte: toDate }
        }
    },
    {
        $group: {
            "_id": {
                "date": {
                    $dateToString: { format: "%d.%m.%Y", date: "$date" }
                }
            }, 
            "count": { $sum: 1 }
        }
    }
])

这很有效,但我还想显示所有数量为零的日子。它应该在一个区间内每天显示,也计数为零。我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

因为它看起来非常微不足道 - 事实并非如此。

没有办法让参考序列与之比较,即使$lookup也无法帮助,因为这是一种内部联接类型。

你可以做到这一点的方法是将结果集的一个后期过程返回到猫鼬。

我想到的步骤可能是:

  1. 以与查询相同的方式创建从req.query.fromDatereq.query.toDate格式的日期数组
  2. 删除我们在结果集
  3. 中的数组中的条目
  4. 将我们的数组与count:0和日期
  5. 合并
  6. 排序结果(如果需要)
  7. 欢迎任何评论!