CouchDB:按键对数据进行分组



我的数据库中有以下数据:

|  value1  |  value2  |
|----------+----------|
|     1    |    a     |
|     1    |    b     |
|     2    |    a     |
|     3    |    c     |
|     3    |    d     |
|----------+----------|

我想要的输出是{"key":1,"value":[a,b]},{"key":2,"value":[a]},{"key":3,"value":[c,d]}

我写了这个地图函数(但不确定这是否正确)

function(doc) {
    emit(doc.value1,doc.value2);
}

但是我缺少reduce函数。谢谢你的帮助!

不确定是否可以/应该使用reduce函数来完成此操作。

但是,您可以使用列表重新格式化输出。尝试以下列表功能:

function (head, req) {
    var row,
        returnObj = {};
    while (row = getRow()) {
        if(returnObj[row.key]){
            returnObj[row.key].push(row.value);
        }else{
            returnObj[row.key] = [row.value];
        }
    }
    send(JSON.stringify(returnObj));
};

输出应该是这样的:

{
  1: [
    "a",
    "b"
  ],
  2: [
    "a"
  ],
  3: [
    "c",
    "d"
  ]
}

希望能有所帮助。

相关内容

  • 没有找到相关文章

最新更新