我有以下方式的预聚合集合:
DAILY_ANALYTIC.update(
{
"_id": id_daily,
"metadata": {"date": d,},
},
{
"$inc": {
"call_daily": 1,
"call_hourly.%d" % (hour,): 1,
"call_minute.%d.%d" % (hour, minute,): 1,
}
}, upsert=True)
我想对call_hourly数据进行分组&为此,我尝试了以下方式但不是wotking
[
{'$match': query_var},
{'$group': {
'_id': {'$substr': ['$_id', 0, 8]},
'call_per_hour': {'$addToSet' : '$call_hourly'},
}
},
{'$project': {
'call_per_hour': 1,
}
},
{'$sort': {
'_id': -1,
}
}
]
知道如何获得像
这样的结果data['result'] = {'_id': '20121102', 'call_per_hour':[{u'3': 5, u'12': 6}]}
或
data['result'] = {'_id': '20121102', 'call_per_hour':[{u'0': 5, u'1': 6, u'2': 4,....,u'23': 2}]}
答案 0 :(得分:0)
您执行此操作的方式,您已经拥有文档中所有可用的每小时通话次数。
由于您为每个通话增加了日期文件中的字段,如果您只是这样做:
db.daily_analytic.find({}, {"metadata.date":1, _id:0, call_hourly:1})
或类似的东西。
如果您认为需要聚合并执行“$group
by”(即使您的代码已经在原始文档中预先分组了代码),请提供一些样本文档(通过mongo) shell你可以db.daily_analytic.find().limit(2).pretty()
并将输出粘贴到你的问题中)然后更容易看到你没有预先计算的值的聚合可能性。