显示来自reduce函数CouchDB的正确结果



>我有"用户"文档,数组名为"订单"。每个订单都有"标题"、"日期"、"费用"等属性。我想计算数据库中每个用户的每笔订单费用的总和。

这是地图函数:

map: function(doc) {
            if (doc.Doc_type && doc.Doc_type === 'user' && doc.Orders) {
                for (var i = 0; i < doc.Orders.length; i++) {
                    emit([doc.Orders[i].Order_date], doc.Orders[i].Fee);
                }
            }
        }

和减少功能:

reduce: function (keys, values, rereduce){
            var sum = 0;
            for(var i=0,fee;fee=values[i];i++){
                sum+=fee;
            }
            return {
                Transactions: sum,
                Revenue: 10
            };
        }

我得到的结果是:

{"Transactions":"0[object Object][object Object]","Revenue":10}}

为简单起见,我不使用您的特定数据结构,但名称应该是不言自明的。

为每个订单发出键/值对 :username/:fee(也许您必须将其解析为整数/浮点数),就像您在代码(映射)中所做的那样:

for(every_order) {
  emit(username, fee)
}

您将为索引中的每个用户名获得 1 个或多个订单行。如果您请求带有?key=":username"的视图,您将获得响应结果数组中的所有订单行。现在,您可以总结客户端的费用,例如在浏览器中,或者 - 按照您的要求 - 使用内置的reduce功能在服务器端执行相同的

操作
_sum

每个用户名您将获得一行,订单费用总额为价值。

相关内容

  • 没有找到相关文章

最新更新