Мне нужно что-то более сложное, чем примеры из документации MongoDB, и я не могу обернуться вокруг этого.
Скажем, у меня есть коллекция объектов вида {date: "2010-10-10", type: "EVENT_TYPE_1", user_id: 123, ...}
Теперь я хочу получить что-то похожее на запрос SQL GROUP BY с группировкой по дате и типу. То есть я хочу количество событий каждого типа в каждый день. Также я бы хотел сделать его уникальным по user_id, т.е. если у пользователя больше событий в тот же день, считайте его только один раз.
Я пытаюсь сделать это с картой / уменьшить.
Я
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, и мне все еще трудно понять основные понятия. Кроме того, там не так много документации. Любая помощь от более опытных пользователей приветствуется. Спасибо!