【问题标题】:Issues aggregating mongo records by the last 7 days过去 7 天聚合 mongo 记录的问题
【发布时间】:2018-08-16 03:26:58
【问题描述】:

我正在尝试计算过去 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' }... 部分有关。

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

【问题讨论】:

标签: mongodb mongoose aggregation-framework


【解决方案1】:

所以,如果我理解正确,您想获取上周的文档,然后按 id_atendente 对它们进行分组,并计算上周每个 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}
        },
}

])

【讨论】:

  • 好像行得通,谢谢,我会接受你的回答。
猜你喜欢
  • 1970-01-01
  • 2022-07-20
  • 1970-01-01
  • 1970-01-01
  • 2013-06-15
  • 1970-01-01
  • 2018-07-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多