Couchdb 减少输出多个值的函数
我有一个多用户的沙发数据库,我想创建一个reduce函数,为每个用户输出一个数字 假设这是我的数据库:Couchdb 减少输出多个值的函数,couchdb,Couchdb,我有一个多用户的沙发数据库,我想创建一个reduce函数,为每个用户输出一个数字 假设这是我的数据库: { user: "A", event: "x", time: 100 } { user: "A", event: "y", time: 150 } { user: "B", event: "x", time: 300 } { user: "B", event: "y", time: 375 } 我想知道每个用户的事件x和
{
user: "A",
event: "x",
time: 100
}
{
user: "A",
event: "y",
time: 150
}
{
user: "B",
event: "x",
time: 300
}
{
user: "B",
event: "y",
time: 375
}
我想知道每个用户的事件x和y之间的时间。也就是说,我想要一个类似
{
user: "A",
xyTime: 50
}
{
user: "B",
xyTime: 75
}
有办法吗?您可以将地图功能定义为:
function(doc){
emit(doc.user, {event:doc.event, time: doc.xyTime});
}
在reduce中,您可以迭代所有值:
function(keys,values){
var xTime = 0
var yTime = 0;
var length = values.length;
for(var i = 0; i < length; i++){
var eventTime = parseInt(values[i].time, 10);
if(values[i].event === "x"){
xTime += eventTime;
} else {
yTime += eventTime;
}
}
var xyTime = Math.abs(xTime - yTime);
return { user: keys[0], xyTime: xyTime };
}
功能(键、值){
var xTime=0
var-yTime=0;
变量长度=value.length;
对于(变量i=0;i