嵌套數組我有包含像數據文檔的CouchDB數據庫:如何獲得總和,平均值等從數字的文檔的CouchDB
"field1": "text",
"field2": "text",
"field3":[14 54 23 24,25,26,23,19,17 etc.]
etc.
我試圖做一個地圖降低獲得數據庫中所有field3值的平均值。
我做了一個圖如下:
function(doc) {
if(doc.field3){
emit(null,doc.field3);
}
}
和減少:
function (keys, values, rereduce) {
if (rereduce){
return sum(values);
} else {
return values.length;
}
}
或者乾脆:
_sum
後者給出了一個數字範圍,這似乎是數組中相同數字的總和。
有上了訪問數字數組,但沒有完整的答案Cloudant網站的例子,在現階段,我無法找到它。
我也調查了CouchDB 2.0.0上的新'mango'
查詢系統,這個系統設置起來要容易得多,但我沒有在文檔中看到用它進行計算的任何方式。
編輯
請允許我冒昧地加入到這個問題,也許有一個很好的例子。
我使用Mockaroo生成數據,並發現了一個替代方法來生成這個數據,這是更現實的,因爲我可以改變數據的更多方面。
然而,這導致瞭如下修改我的數組:
"field3":[{"item": 44}, {"item":23}, {"item": 36}, etc.]
使用@Alexis
提供了成功的地圖我試圖得到它讀取該數據。例如:
function(doc) {
if(doc.field3[0].item >0){
if (doc.field3) {
if (Array.isArray(doc.field3))
for (var n in doc.field3)
emit(null, doc.field3[n].item);
}
}
}
我試圖上面的代碼的許多變化,增加或.item
和[]
添加/移除的if語句,沒有成功。
我將不勝感激與陣列的這種變化有所幫助,如果可能的話。
設置的JavaScript的map/reduce是不容易的某些原因。 我已經通過了很多免費的在線JavaScript學習課程,嘗試和提高我的CouchDB能力,但沒有取得太大的成功。 有沒有更好的方式來學習寫作地圖的正確JavaScript的黑暗藝術減少?
非常感謝幫助。
你減少是_count相當於,不** _ **和那 –