【发布时间】:2012-10-20 15:05:09
【问题描述】:
我有如下方式的预聚合集合:
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 数据进行分组,为此我尝试了以下方式,但没有尝试
[
{'$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}]}
【问题讨论】:
-
首先,您需要使用 $project 来创建您想要“$group”的文档 - 例如,这就是 $substr 等运算符用于构建新字段的地方。其次 - 您似乎希望按天而不是按小时分组,并查看当天的平均呼叫次数,查看您想要的输出?您能否提供您收藏的示例文档并确认您想要的输出分组/类型?
标签: django mongodb pymongo aggregation-framework