【问题标题】:couchdb - Getting the total of distinct valuescouchdb - 获取不同值的总数
【发布时间】:2014-08-29 02:34:37
【问题描述】:

我的 Couch 数据库中有以下数据结构。 我需要每天计算不同的sessions_id 的数量。记录还必须按app_version 过滤。

我现在的 MapReduce 是这样的

"dau": {
           "map": "function(doc) {
                  date = doc.session.timestamp.split("T")[0];
                  emit([date, doc.app_version, doc.session.session_id], 1);
                  }",
           "reduce": "_count"
       }

但这给了我如下输出

["2014-08-20", 2, "kOnNIhCNQ31LlkpEPQ7XnN1D"] 1
["2014-08-20", 2, "TOnNIhCNQ31LlkpEPQ7XnN1D"] 2
["2014-08-21", 2, "TOnNIhCNQ31LlkpEPQ7XnN1D"] 2

我需要将其打印为 - 因为这是每天唯一 session_ids 的数量

["2014-08-20", 2] 2
["2014-08-21", 2] 1

关于如何做的任何想法?

任何帮助将不胜感激。

[
        {
            "app_version": 2,
            "platform": "android",
            "session": {
                "timestamp": "2014-08-20T00:00:00.000Z",
                "session_id": "TOnNIhCNQ31LlkpEPQ7XnN1D",
                "ip": "202.150.213.66",
                "location": "1.30324,103.5498"
            }

        },
    {
        "app_version": 2,
        "platform": "android",
        "session": {
            "timestamp": "2014-08-21T00:00:00.000Z",
            "session_id": "TOnNIhCNQ31LlkpEPQ7XnN1D",
            "ip": "202.150.213.66",
            "location": "1.30324,103.5498"
        }

    }
    {
        "app_version": 2,
        "platform": "ios",
        "session": {
            "timestamp": "2014-08-21T00:00:00.000Z",
            "session_id": "TOnNIhCNQ31LlkpEPQ7XnN1D",
            "ip": "202.150.213.66",
            "location": "1.30324,103.5498"
        }

    },
    {
        "app_version": 1,
        "platform": "ios",
        "session": {
            "timestamp": "2014-08-21T00:00:00.000Z",
            "session_id": "TOnNIhCNQ31LlkpEPQ7XnN1D",
            "ip": "202.150.213.66",
            "location": "1.30324,103.5498"
        }

        }
    ]

【问题讨论】:

    标签: mapreduce couchdb


    【解决方案1】:

    将 app_version 放在您的视图中:

    emit([doc.app_version, date, doc.session.session_id], 1);
    

    然后用 group_level=2 查询

    【讨论】:

    • 这不能满足我的需要。这将输出 ["2014-08-20", 2] 3 ["2014-08-21", 2] 2 这不是我想要的
    猜你喜欢
    • 2016-08-27
    • 2018-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-27
    • 2015-08-21
    相关资源
    最近更新 更多