Как получить СУММУ всех значений CouchDB? - PullRequest
2 голосов
/ 05 сентября 2011

Как извлечь SUM в зависимости от идентификатора или чего-то еще, с целью получения SUM всех значений?Я могу получить все значения, но не могу 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"
}

и мой взгляд выглядит так:

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

1 Ответ

4 голосов
/ 05 сентября 2011

Вам просто нужно добавить функцию уменьшения, например,

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

Это так часто, что у нас есть встроенная функция, которая намного быстрее;

_sum

Вам нужно будет указать значение, которое вы хотите суммировать, в качестве значения, например:

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