我的数据如下
{
"key":"adasd",
"col1"::23,
"col2":3
}
我想查看按比例降序排列的结果col1/sum(col2)
其中sum(col2)
指的是sum
的所有值col2
。我对 cloudant 有点陌生,所以我不知道解决这个问题的最佳方法是什么。我能想到几个选择。
- 为每个新值创建一个新列
sum(col2)
并不断更新它col2
- 对于每条记录,还要创建一个新列
col1/sum(col2)
。然后我可以在这个列上排序。 - 使用视图即时计算比率和总和。这样我就不必存储新列,而且我不必在每次更新时执行昂贵的计算。
我试图创建一个视图,地图功能很简单
function (doc) {
emit(doc._id, {"col1_value":doc.col1,"col2_value":doc.col2});
}
但我对减少模板感到困惑
function (keys, values, rereduce) {
if (rereduce) {
return sum(values);
} else {
return values.length;
}
}
我不知道如何访问两列的值,然后在这里聚合。这甚至可能吗?有没有其他方法可以达到我需要的结果?