我正試圖在使用PouchDB/CouchDB時處理map/reduce查詢。如何在CouchDB中使用GROUP BY reduce函數
我有很多在我的數據庫文件,但我需要創建一個查詢文件,並給了我所有的獨特的團隊名稱作爲關鍵的設計,然後告訴我
一)有多少獨特的病房每隊
二)每隊作業總數(在所有病房)
我的數據的結構中:
{
"_id": "0448071807c0f37f53e06aab54034a42",
"_rev": "6-13fd78ada9c8833ec36a01af0acd5957",
"team": "Team A",
"ward": "Ward A",
"date": "2017-03-30",
"person": "Alice",
"bed": "Bed 001",
"jobs": [1,2,3,4]
}
{
"_id": "0448071807c0f37f53e06aab54034a42",
"_rev": "6-13fd78ada9c8833ec36a01af0acd5957",
"team": "Team A",
"ward": "Ward B",
"date": "2017-03-30",
"person": "Bob",
"bed": "Bed 001",
"jobs": [1,2]
}
{
"_id": "0448071807c0f37f53e06aab54034a42",
"_rev": "6-13fd78ada9c8833ec36a01af0acd5957",
"team": "Team A",
"ward": "Ward C",
"date": "2017-03-30",
"person": "Charles",
"bed": "Bed 001",
"jobs": [9,5]
}
{
"_id": "0448071807c0f37f53e06aab54034a42",
"_rev": "6-13fd78ada9c8833ec36a01af0acd5957",
"team": "Team B",
"ward": "Ward 00",
"date": "2017-03-30",
"person": "David",
"bed": "Bed 001",
"jobs": [1]
}
我希望會是這樣的輸出:
A隊 - 3獨特的病房 - 8就業
B隊 - 1獨特的病房 - 1工作
eg
{
"key": "Team A",
"value": {
"wards": 3,
"jobs": 8
}
}
{
"key": "Team B",
"value": {
"wards": 1,
"jobs": 1
}
}
我的地圖是目前:
{
"all": {
"map": "function(doc) { emit(doc.team, doc) }"
}
}
這是減少在我的奮鬥進來
編輯
我已上CouchDB View equivalent of SUM & GROUP BY使用的建議,但此只是走向我的挑戰的一半。
如果我使用:
{
"all": {
"map": "function(doc) { emit([doc.team, doc.ward], 1) }",
"reduce": "function(keys, values) { return sum(values); }"
}
}
然後去http://my-ip:5984/wardround_jobs/_design/teams/_view/all?group_level=1然後我看到了獨特的球隊(好)和事件(也很大)的數量,但我不確定我如何延長降低功能包括:就業總數。
可能重複的[CouchDB查看相當於SUM和GROUP BY](http://stackoverflow.com/questions/5511810/couchdb-view-equivalent-of-sum-group-by) – Flimzy
謝謝。我更新了我的問題,因爲我從那篇文章中學到了什麼。它有幫助,但我仍然有點卡住 – Chris