mongodb 获取分组的最新日期

标签 mongodb group-by mapreduce pymongo

我有表格中的数据

{userid: 123,
actiontype: 'loggedin',
timestamp: date-time}

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

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

最佳答案

您可以使用 Mongo group function. 来完成以下代码显示了如何执行此操作。

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}
});

关于mongodb 获取分组的最新日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11339630/

相关文章:

hadoop - 我可以使用Text作为值写入MapReduce中的上下文吗

javascript - 使用 $sum 和 $cond 获取值的 $sum,而不是 mongo 中实例的总和

javascript - Mongoose 保存嵌套的对象数组 - Node.js

node.js - 使用 Mongoose 进行架构投票的 "right way"?

node.js - 无法连接到远程数据库

python - 从 2 列创建一个表

python - 根据条件转换数据框的列

SQL GROUP BY 返回单行

amazon-ec2 - 使用 Hadoop 处理来自 Web 服务器的实时日志提要

python - Python 中经典 Hadoop 字数统计示例中的数据流