某些文件组的组数

时间:2017-03-02 23:51:13

标签: mongodb

此mongodb中的文档具有属性createdAt = Date.now(),它是纪元时间以及属性useridname
所需要的是name='abc'的文档数量,这些文档的数量少于或等于4个月前,但是计算由同一userId创建并在同一天创建的文档。
最好的方法是什么?聚合或地图或组合或......

1 个答案:

答案 0 :(得分:0)

您可以尝试以下聚合。

var date = new Date(Date.UTC(2017, 2, 3, 0, 0, 0)); 
date.setMonth(date.getMonth() - 4);

db.collection.aggregate([{
    $match: {
        createdAt: {
            $gte: date,
            $lte: new Date(Date.UTC(2017, 2, 3, 0, 0, 0))
        },
        name: "abc"
    }
}, {
    $group: {
        _id: {
            date: {
                $dayOfMonth: "$createdAt"
            },
            month: {
                $month: "$createdAt"
            },
            year: {
                $year: "$createdAt"
            },
            userid: "$userid"
        },
        count: {
            $sum: 1
        }
    }
}]);