0
我有以下記錄結構(簡化爲僅包括重要比特):如何在Ektorp和couchDB中構建多部分查詢?
_id: couchDB generated ID
_rev: couchDb generated revision number
_creationDate: timestamp for when the record was created
_amount: how much money was paid
_type: how they paid (Visa, MC, etc.)
我需要能夠來總結總數使用creationDate作爲起始和結束鍵各種付款方式。我想避免爲每種類型進行多個查詢,因爲可能有不明數量的付款類型。我首先必須查詢所有可用類型,然後針對每種特定類型執行一次查詢。
我的觀點的地圖:
function(doc) {
if(doc.type=="payment") {
emit([doc.type, doc.creationDate], doc.amount);
}
}
我的觀點的減少功能:
_sum
我的查詢:
ViewQuery query = new ViewQuery()
.designDocId(GLOBAL_DOC)
.viewName(TOTAL_CREDIT_CARD_PAYMENTS_FOR_TODAY)
.startKey(start)
.group(true)
.groupLevel(1)
.reduce(true);
當我運行在蒲團它預期建立的一切查詢,給出按類型分組的所有類型的總數(並且由於沒有指定開始或結束而忽略了creationDate)。當我使用查詢運行它時,它看起來像開始和結束日期被忽略,因爲我得到的數據超出總計中包含的預期範圍。
另外,有沒有辦法通過被褥運行開始和結束鍵查詢?如果我知道如何跳過重新編譯/重新安裝的步驟,它會使開發速度更快。
編輯:什麼我試圖實現將是這個樣子的SQL版本:
SELECT sum(amount)
FROM payment
WHERE creationDate >= startDate AND creationDate <= endDate
GROUP BY type;
是否有遵循以獲得從地圖這種行爲的標準模式/減少?
我試過顛倒了鍵中字段的順序。這使得開始/結束工作,但阻止我按付款類型分組。 –
我自己回答了補充問題。祕密是繞過蒲團,直接走到沙發:http:// localhost:5984/testdb/_design/sitedb/_view/my_view?group = true&group_level = 1。 –