2017-08-30 216 views
0

我有一個map函數和reduce函數來計算一個鍵的所有出現次數。該代碼是下面的CouchDB 2.0設計文檔:CouchDB返回None行鍵(減少功能)

地圖功能

function(doc) { emit(doc.domainID, 1); } 

Reduce函數

_sum 

這裏是什麼樣的瀏覽器顯示的快照:

Map and reduce functions result

這裏是結果,當我運行在Python下面的代碼:打印時

import couchdb 
couch = couchdb.Server("http://localhost:5984/")  
counts = couch['event_db'].view('doc/eventbydomainid', 
           reduce=True, descending=True) 

終端結果鍵和值

Terminal result showing no key

我期待下面的結果,但沒有看到它:

{"ad1": 32, "ad2": 1} 

任何幫助woul不勝感激。

如果您使用的是減少功能謝謝

布賴恩

回答

1

,默認行爲是將整個數據集縮減爲一個單獨的值。如果您想分組,請將group=true添加到您的請求中。 (documentation

雖然您沒有具體詢問這一點,但您在使用CouchDB中的map/reduce時無疑會碰到它。如果您發出的是複雜鍵(例如:數組),則可以使用group_level參數按陣列的各個部分從左到右進行分組。 (​​)

這裏一個有趣的用例是將一個日期作爲一個數組發佈,如:[2017, 8, 29, 22, 59, 16]。使用group_level=1將按年分組,group_level=2將按年份+月份分組,等等。 (專業提示:使用group_level將隱式設置group=true

+0

非常感謝你多米尼克!這是我正在尋找的解決方案。 – Brian

+0

你也可以推薦我如何根據開始或結束文檔ID來計數嗎?提前致謝! – Brian

+0

我相信你可以通過'startkey_docid'和'endkey_docid'參數來做到這一點。 ([documentation](http://docs.couchdb.org/en/2.0.0/api/ddoc/views.html#db-design-design-doc-view-view-name)) –