2017-08-01 81 views
0

我是noSQL,couchDB和mapreduce的新手,需要一些幫助。在Fauxton學習mapreduce

我這裏{} How to use reduce in Fauxton討論同樣的問題,但不明白的答案:(

我有一個工作地圖功能:。

function (foo) { 
    if(foo.type == "blog post"); 
    emit(foo) 
} 

返回11個個人文件我想修改這伴隨着1 計數我試圖返回foo.type

function (doc) { 
    if(doc.type == "blog post"); 
    return count(doc) 
} 

和Reduce面板中的「_count」,但很明顯我做錯了,因爲View沒有返回任何東西。

在此先感謝您的幫助或指導!

回答

1

地圖

所以,當你建立一個地圖功能,你是從字面上創建dictionnary或地圖,是關鍵:值數據結構。

您的地圖功能應該會發出要查詢的密鑰。您也可以發出一個值,但如果您打算只獲取關聯的文檔,則不必發出任何值。爲什麼?因爲有一個查詢參數可用於返回關聯的文檔(?include_docs=true)。

減少

然後,你可以有減少的功能將被要求使用相同的按鍵每個結果。每個具有相同鍵的結果都將通過縮減功能進行處理以減少值。

更正例如

所以你的情況,你要映射文件,我想每個類型的文檔。

您可以創建一個函數,該函數發出具有type屬性的文檔。

function(doc){ 
    if(doc.type) 
     emit(doc.type); 
} 

如果查詢此視圖,您會看到每行的鍵將是文檔的類型。如果您選擇減少功能_count,則應具有每種類型的文檔數量。

當查詢視圖,你必須指定:group=true&reduce=true

此外,您還可以通過這些參數查詢得到blog post類型的所有文件:?key="blog post"

1

在Fauxton,在減少步驟是那種尷尬和不直觀的發現。

  1. 在您的地圖中鍵入 的「Reduce(optional)」彈出窗口中選擇_count。
  2. 選擇「保存文檔,然後生成索引」。這將顯示您的 地圖結果。
  3. 找到齒輪圖標旁邊頂部的「選項」按鈕。如果您看到的是綠色帶,請使用X.關閉綠色帶。
  4. 選擇選項,然後選擇「縮小」複選框。選擇運行查詢。