最近7天内发布汇总mongo记录的问题

时间:2018-08-15 19:05:40

标签: mongodb mongoose aggregation-framework

我正在尝试计算最近7天/周每个id_atendentes的发生情况。

我有以下查询:

db.atendimentos.aggregate([
 {'$group' :
             {'_id' :
                 {'id_atendente':'$id_atendente', 'date':
                     { '$gte': new Date((new Date().getTime() - (7 * 24 * 60 * 60 * 1000))) }
                }},
             'sum': {'$sum': 1} }
])

我认为它会起作用,但是没有。

我知道$ week运算符,但是我不认为它可以实现我想要的功能。

我遇到以下错误:管道阶段规范对象必须恰好包含一个字段。

我想可能与我的'date':{'$ gte'} ...部分有关。

希望得到一些帮助,谢谢!

1 个答案:

答案 0 :(得分:1)

因此,如果我理解正确,您想获取上周的文档,然后将它们按id_atendente分组,并计算上周每个参加者的数量。

在这种情况下,您首先需要使用$match阶段过滤上周的文档,然后按照$group阶段进行过滤,以按出席者ID进行分组。

我认为以下代码可以完成这项工作:

db.atendimentos.aggregate([
{
    '$match': {
        'date': {'$gte': new Date((new Date().getTime() - (7 * 24 * 60 * 60 * 1000)))}
    },
},
{
    '$group':
        {
            '_id': "$id_atendente",
            'sum': {'$sum': 1}
        },
}

])