mongodb получить последнюю дату для группы
У меня есть данные в виде
{userid: 123,
actiontype: 'loggedin',
timestamp: date-time}
Я хочу выполнить запрос, который сгруппирует данные для уникальных комбинаций userid и actiontype и вернет документ с последним значением метки времени.
Есть идеи, как я могу это сделать? В настоящее время я думаю о том, чтобы сделать поиск, а затем бросить возвращенные значения в массивы (python и pymongo), а затем выполнить операции там. Однако я чувствую, что это будет гораздо более элегантно/эффективно сделать это непосредственно на mongodb.
1 ответ:
Вы можете сделать это с помощью функции группы Монго .Следующий код показывает, как это можно сделать.
db.stack.group( { keyf: function(doc) { return { userid : doc.userid, actiontype : doc.actiontype }; }, reduce: function(obj,prev) { if (prev.maxdate < obj.timestamp) { prev.maxdate = obj.timestamp; } }, initial: {maxdate:0} });