2014-02-21 423 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“就是整个文档。 –