2

データベースに次のデータがあります。

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

...しかし、削減機能がありません。ご協力いただきありがとうございます!

4

1 に答える 1

0

これが 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"
  ]
}

それが役立つことを願っています。

于 2012-08-29T08:36:39.463 に答える