我想從java執行查詢對我在CouchDB上創建的地圖/減少視圖。 我的地圖功能如下所示:CouchDB地圖/減少從Ektorp查看查詢
function(doc) {
if(doc.type == 'SPECIFIC_DOC_TYPE_NAME' && doc.userID){
for(var g in doc.groupList){
emit([doc.userID,doc.groupList[g].name],1);
}
}
}
和Reduce函數:
function (key, values, rereduce) {
return sum(values);
}
的觀點似乎從被褥界面執行時是工作(雖然沒有指定的鍵)。 我想要做的是統計屬於一個組的一些文檔類型的數量。我想用'userID'和組名作爲鍵來查詢該視圖。
我正在使用Ektorp庫來管理CouchDB數據,如果我在沒有鍵的情況下執行此查詢,它將返回標量值,否則它只會打印一條錯誤消息,指出對於reduce查詢組= true必須指定。
我曾嘗試以下:
ViewQuery query = createQuery("some_doc_name");
List<String> keys = new ArrayList<String>();
keys.add(grupaName);
keys.add(uzytkownikID);
query.group(true);
query.groupLevel(2);
query.dbPath(db.path());
query.designDocId(stdDesignDocumentId);
query.keys(keys);
ViewResult r = db.queryView(query);
return r.getRows().get(0).getValueAsInt();
例如上述工作而不會'鍵的指定。 我有ComplexKey工作例如像其他查詢:
ComplexKey key = ComplexKey.of(userID);
return queryView("list_by_userID",key);
但這只是返回類型T的名單(名單) - 當然使用CouchDbRepositorySupport - 並不能與用於降低類型的查詢(據我所知) 。
有沒有什麼辦法可以用指定的reduce函數執行查詢,並且有一個使用Ektorp庫的具有2個或更多值的複雜關鍵字?任何例子都非常感謝。