【问题标题】:How to get SUM of all CouchDB values?如何获得所有 CouchDB 值的总和?
【发布时间】:2011-09-05 10:51:06
【问题描述】:

如何根据 ID 或其他内容提取 SUM,以获取所有值的 SUM?

我能够得到所有值,但不能求和,因为它是一个变量,所以必须有某种分段来求和它们??有什么想法吗?

$db = $.couch.db("fuel");  

function refreshFuel() {  

$("div#fuel").empty();  

$db.view("fuel/bill", {success: function(data) {  

    for (i in data.rows) {  
    id = data.rows[i].id;  
    bill = data.rows[i].key;  
    date = data.rows[i].value;  

    html = '<div class="fuel">' +  
   '<span class="bill">' + bill + '</span> ' +  
   '<span class="date">' + date + '</span> ' +    
   '</div>';  

  $("div#fuel").append(html);  
 }  
 }});  
}  

function getAll(){

$("div#all").empty();  

$db.view("fuel/bill", {success: function(data) {  

    for (i in data.rows) {  
    id = data.rows[i].id;  
    bill = data.rows[i].key;  // how to get SUM of all this values
    date = data.rows[i].value;  

    html = 
   '<span class="all">' + bill + '</span> '     


  $("div#all").append(html);  
 }  
}});

}

编辑:

我的 JSON 如下所示:

    {
   "_id": "1a06982d3434f37a04a02dbf360010ee",
   "_rev": "1-c8c9d5252a76abd8f565ff82bf63b0e8",
   "value": "200",
   "date": "2011-09-05T10:28:55.101Z"
}

我的 VIEW 看起来像这样:

function(doc) {
    if (doc.value, doc.date) {
        emit(doc.value,doc.date, doc);
    }    
}

【问题讨论】:

    标签: view couchdb couchapp couchbase


    【解决方案1】:

    你只需要添加一个reduce函数,例如,

    function(keys, values, rereduce) {
      return sum(values);
    }
    

    这很常见,我们有一个更快的内置函数;

    _sum
    

    您需要发出要求和的值作为值,例如;

    function(doc) {
      emit(doc.date, doc.value);
    }
    

    【讨论】:

    • 而且如果我添加 reduce.js 我会丢失正常值,它只显示 _sum 版本???如何提取这两个值?
    • 只需使用 ?reduce=false 进行查询 :) 请参阅 wiki.apache.org/couchdb/HTTP_view_API#Querying_Options 了解更多信息。
    • 'sum' 是否是 CouchDB 中的预定义函数,因为它肯定不是 javascript 的一部分?
    猜你喜欢
    • 2019-03-31
    • 2018-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-28
    • 2016-08-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多