我的数据库中有以下数据:
| 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"
]
}
希望能有所帮助。