4

我有以下格式的数据:

{
    "__v" : 0,
    "_id" : ObjectId("12367687"),
    "xyzId" : "ADV_ID",
    "date" : ISODate("2013-08-19T10:58:21.473Z"),
    "gId" : "987654",
    "type" : "checks"
}

对于上述数据,我必须使用“created_on”字段为每日、每周、每月和每年的数据绘制图表,并为“type”字段计数。我有以下部分有效的查询。

     db.trackads.aggregate(
     {$match : {"gId" : "987654",type : 'checks'}},
     { $group : { _id : { "day" : {"$week" : "$date"}},cnt : {"$sum" : 1}}});

结果:

{
    "result" : [
        {
            "_id" : {
                "day" : 34
            },
            "cnt" : 734
        },
        {
            "_id" : {
                "day" : 33
            },
            "cnt" : 349
        }
    ],
    "ok" : 1
}

但是使用上面的查询,当“类型”=印象数为 0 时,我没有得到日期(星期数)的结果。我应该如何修改 mongo 查询以获得计数 0 的结果?

4

2 回答 2

0

最简单的选择是在使用此查询结果的代码中添加零。

MongoDB 无法发明不存在的数据。例如,您希望它在时间上回溯和回溯多远来创建零?

于 2013-08-29T06:00:53.207 回答
0

如果我正确理解了这个问题,您可以按以下方式进行。

db.trackads.aggregate({$match:{"groupId":"520a077c62d4b3b00e008905",$or:[{type:{$exists:false}},{type:'impressions'}]}},{$group:{_id:{"day":{"$week":"$created_on"}},cnt:{"$sum":1}}});
于 2013-08-28T13:35:37.890 回答