2011-09-05 93 views
2

如何提取SUM取决于ID或东西,目标是获得所有值的SUM?


我能够获得所有的值,但是SUM SUM可以存放其单个变量,因此必须有某种分段来对它们进行SUM?有任何想法吗?如何获得所有CouchDB值的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); 
    }  
} 

回答

4

你只需要添加一个减少功能,如,

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

这很常见,我们有一个内置的功能,速度更快;

_sum 

您需要发出想要求和的值作为值,所以类似于;

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

也如果我添加reduce.js我失去了正常值,它只显示_sum版本?如何提取这两个值? –

+2

只需使用?reduce = false查询:)有关更多信息,请参阅http://wiki.apache.org/couchdb/HTTP_view_API#Querying_Options。 –

+0

明白了,非常感谢,欢呼! –