Mapreduce Couchdb文档/功能

Mapreduce Couchdb文档/功能,mapreduce,couchdb,couchdb-futon,Mapreduce,Couchdb,Couchdb Futon,在包含以下信息的文档中: { "address": [{ "Street": "123 xyz", "City": "Belmont" }] } 如何查看城市名称。这是否正确: function(doc) { emit(doc.address.City,null); } 它只返回null。我想看看“贝尔蒙特”这个名字。 感谢您的帮助。在您的数据中,地址是一个数组,因此它没有城市属性 如果您的数据中只有一个地址: { "address": { "Str

在包含以下信息的文档中:

{
  "address": [{
    "Street": "123 xyz", 
    "City": "Belmont"
  }]
}
如何查看城市名称。这是否正确:

function(doc) {
  emit(doc.address.City,null);
}
它只返回
null
。我想看看“贝尔蒙特”这个名字。
感谢您的帮助。

在您的数据中,
地址
是一个数组,因此它没有
城市
属性

如果您的数据中只有一个地址:

{
  "address": {
    "Street": "123 xyz", 
    "City": "Belmont"
  }
}
获取
/{database}/{u design/{ddoc}/{u view/{view}
应返回:

{"rows":[
  {"key":"Belmont", "id":"{id}", "value":null}
]}
作为旁注,请注意,您还可以获得
/{database}/{ddoc}/{view/{view}?include_docs=true

{"rows":[
  {"key":"Belmont", "id":"{id}", "value":null, "doc":{
    "address": {
      "Street": "123 xyz", 
      "City": "Belmont"
    }
  }}
]}
最后但并非最不重要的一点是,如果您的数据中确实需要多个地址,您可以将它们全部发送:

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

{“name”:“jack”,“address”:[{“Street”:“123 xyz”,“City”:“Belmont”}]}如果我也有名字,我将能够根据您编写的上一个函数看到城市旁边的名字。谢谢你的帮助。我希望看到名称是键,城市是值。使用
include\u docs=true
,您确实可以获得完整的文档(带有“jack”和他的所有地址)。您需要记住的是,
是您用来选择或排序行的,
要么是您想要保留的复杂计算的结果,要么是您想要用
reduce
函数聚合的部分结果,
文档
就是整个文档。