我正在尝试计算最近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'} ...部分有关。
希望得到一些帮助,谢谢!
答案 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}
},
}
])