mongodb获取分组的最新日期

Ris*_*ran 2 group-by mapreduce mongodb pymongo

我有表格中的数据

{userid: 123,
actiontype: 'loggedin',
timestamp: date-time}
Run Code Online (Sandbox Code Playgroud)

我想运行一个查询,该查询将数据分组为userid和actiontype的唯一组合,并返回具有最新时间戳值的文档.

我有什么想法可以做到这一点?目前我正在考虑进行查找,然后将返回的值抛出到数组(python和pymongo)中,然后在那里进行操作.但是,我觉得直接在mongodb上执行此操作会更加优雅/高效.

Par*_*ade 6

你可以使用Mongo组功能.以下代码显示了如何执行此操作.

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}
});
Run Code Online (Sandbox Code Playgroud)