2014-02-21 242 views
0

與以下信息的文件:CouchDB文檔/功能

{ 
    "address": [{ 
    "Street": "123 xyz", 
    "City": "Belmont" 
    }] 
} 

如何查看各城市的名稱。這是正確的:

function(doc) { 
    emit(doc.address.City,null); 
} 

它只返回null。我想看到名字「貝爾蒙特」。 任何幫助,不勝感激。

回答

1

在您的數據中,address是一個數組,因此它沒有City屬性。

如果你只在你的數據的一個地址:

{ 
    "address": { 
    "Street": "123 xyz", 
    "City": "Belmont" 
    } 
} 

獲取/{database}/_design/{ddoc}/_view/{view}應該返回:

{"rows":[ 
    {"key":"Belmont", "id":"{id}", "value":null} 
]} 

作爲一個側面說明,請注意,您也可以得到​​3210:

{"rows":[ 
    {"key":"Belmont", "id":"{id}", "value":null, "doc":{ 
    "address": { 
     "Street": "123 xyz", 
     "City": "Belmont" 
    } 
    }} 
]} 

最後但並非最不重要的,如果你真的需要y中的多個地址我們的數據,你可以把他們所有:

function(o) { 
    for each (var a in o.address) { 
    emit(a.City); 
    } 
} 
+0

{ 「名」: 「傑克」, 「地址」:[{ 「街」: 「123 XYZ」, 「城市」: 「貝爾蒙特」 }] }如果我也有名字,我可以看到城市旁邊的名字,根據你寫的最後一個函數。謝謝你的幫助。我想看到這個名字是關鍵和城市的價值。 – user3323595

+0

使用'include_docs = true',您確實可以獲得完整文檔(帶有「jack」和他的所有地址)。你需要記住的是'key'是你用來選擇或排序行的方式,'value'可以是你想要保留的複雜計算的結果,或者是一個你想用'減少「功能,」doc「就是整個文檔。 –