我需要比MongoDB文档中的示例稍微复杂一点的东西,我似乎无法理解它.
假设我有一个{date: "2010-10-10", type: "EVENT_TYPE_1", user_id: 123, ...}
种形式的对象集合
现在,我想得到类似于SQL分组查询的东西,根据日期和类型进行分组.也就是说,我想要每天每种类型的事件的数量.此外,我想通过用户id使其唯一,即如果一个用户在同一天有更多事件,只计算一次.
我正试图用map/reduce来实现这一点.
我愿意
db.logs.mapReduce(
function() {
emit(this.type, 1);
},
function(k, vals) {
var total = 0;
for (var i = 0; i < vals.length; i++)
total += vals[i];
return total;
}
)
哪些很好地按类型分组,但是现在,我怎么能同时按日期分组呢?似乎emit()中的键不能是数组(我想做emit([this.date, this.type], 1)
).此外,我如何确保每个用户的唯一性?
我刚开始使用MongoDB,但仍然难以掌握基本概念.此外,没有太多可用的文档.感谢经验丰富的用户提供的任何帮助.谢谢