我在CouchDB中有一個示例數據庫,其中包含多個飛機的信息,以及一個顯示製造商爲關鍵字和模型作爲值的視圖。CouchDB減少錯誤?
地圖功能是
function(doc) {
emit(doc["Manufacturer"], doc._id)
}
和減少功能
function(keys, values, rereduce){
return values.length;
}
這是非常簡單的。我確實得到正確的結果,當我用被褥,在那裏我有26架飛機波音的顯示視圖:
但是,如果使用REST客戶端查詢使用
http://localhost:6060/aircrafts/_design/basic/_view/VendorProducts?key="BOEING"
我的看法得到
{"rows":[
{"key":null,"value":2}
]}
我測試了不同的客戶端(包括Web瀏覽器,REST客戶端擴展和捲曲),所有給我的價值2!而使用其他鍵的查詢正常工作。
MapReduce函數或查詢有問題嗎?
謝謝!這確實是我需要的。我對CouchDB相當陌生,有些事情我沒有注意。而使用'group = true'也解決了'null'鍵的問題,在這種情況下,雖然值是正確的,但鍵總是'null'。但是現在我想知道,爲什麼我們需要'group'和'reduce'兩個參數?在這種情況下只有'reduce'有用? –
區別在於,對於每組唯一鍵,「group」和「group_level」運行減少,其中reduce將結果減少爲單個值。所以如果你有另一個像'ACME'的製造商,上面的查詢將返回一個結果'BOEING:26,ACME:1',其中reduce將返回'27'。因此,像運行多個分組一樣減少鍵。 [更多關於wiki](http://wiki.apache.org/couchdb/Introduction_to_CouchDB_views#Grouping)。順便說一句,我希望你享受couchdb :) –
再次感謝!我嘗試了使用和不使用「組」的東西,我現在認爲我對它有更多的瞭解。但是,當密鑰包含「BOEING」和「group = false」時,我仍然得到一個奇怪的結果,它總是2,而其他結果是正確的。當'group = true'時,結果也是正確的。也許我的文檔有問題?順便說一下,我使用的是CouchDB 1.5,它可能是一個已經在1.6中修復的bug嗎? (由於一些未知的原因,我沒有成功地讓我的Windows 7工作1.6)。我喜歡CouchDB,我想深入其中! –