我在尋找一個map/reduce函數來計算設計文檔中的狀態。 您可以在下面看到我當前數據庫中的示例文檔。在CouchDB中對散列數組進行映射/縮小
{
"_id": "0238f1414f2f95a47266ca43709a6591",
"_rev": "22-24a741981b4de71f33cc70c7e5744442",
"status": "retrieved image urls",
"term": "Lucas Winter",
"urls": [
{
"status": "retrieved",
"url": "http://...."
},
{
"status": "retrieved",
"url": "http://..."
}
],
"search_depth": 1,
"possible_labels": {
"gender": "male"
},
"couchrest-type": "SearchTerm"
}
我想擺脫status
關鍵的和而從URL的狀態計算。 我現在by_status
圖如下所示:
function(doc) {
if (doc['status']) {
emit(doc['status'], null);
}
}
我嘗試了一些東西,但沒有任何實際工作。現在我Map Function
看起來是這樣的:
function(doc) {
if(doc.urls){
emit(doc._id, doc.urls)
}
}
而且我Reduce Function
function(key, value, rereduce){
var reduced_status = "retrieved"
for(var url in value){
if(url.status=="new"){
reduced_status = "new";
}
}
return reduced_status;
}
結果是我得到檢索到處是絕對不正確的。
我試圖縮小問題,它似乎是value
是沒有數組,當我用下面的Reduce Function
我得到的長度爲1無處不在,這是不可能的,因爲我有我的數據庫文件12,20之間的每個含200個網址
function(key, value, rereduce){
return value.length;
}
alt text http://img.skitch.com/20100316-qeawxgd5pru8d5i6bprygcsmhf.jpg
我在做什麼錯? (我知道我希望你爲我編寫代碼,我感到內疚,但是現在我從數據庫中獲取數據之後計算ruby中的狀態。如果已經從數據庫獲取了正確的數據數據庫)
什麼JSON.stringify(value)返回? (JSON是Firefox 3.5+中的本地窗口對象) – Alsciende 2010-03-16 13:20:01