Json 如何从CouchDB文档中的视图获取特定数据

Json 如何从CouchDB文档中的视图获取特定数据,json,database,view,nosql,couchdb,Json,Database,View,Nosql,Couchdb,我想在我的文档中计算每个城市的建筑数量。这是肯塔基州的一份文件,我一共有6个城市。当我使用doc.\u id时,它返回id,但当我使用doc.city时,它返回null。 如何显示每个城市的建筑总数 CouchDB中的文档: { "_id": "729489bb6702c473bb72254d13003f85", "_rev": "1-50da566becf84a0a686853290c2ad8a5", "Projects": [ { "city": "Kentu

我想在我的文档中计算每个城市的建筑数量。这是肯塔基州的一份文件,我一共有6个城市。当我使用
doc.\u id
时,它返回id,但当我使用
doc.city
时,它返回null。 如何显示每个城市的建筑总数

CouchDB中的文档:

{
  "_id": "729489bb6702c473bb72254d13003f85",
  "_rev": "1-50da566becf84a0a686853290c2ad8a5",
  "Projects": [
    {
      "city": "Kentucky",
      "amount of people living": "853312",
      "overview": [
        {
          "building": "Center building",
          "amount of people": "150000",
          "teams": [
            {
              "party": "xd",
              "vote": "20000"
            },
            {
              "party": "zh",
              "vote": "20000"
            },
            {
              "party": "gh",
              "vote": "5000"
            },
            {
              "party": "sd",
              "vote": "20000"
            }
          ]
        },
        {
          "building": "Left building",
          "amount of people": "120000",
          "teams": [
            {
              "party": "gh",
              "vote": "20000"
            },
            {
              "party": "sw",
              "vote": "15000"
            },
            {
              "party": "gj",
              "vote": "5000"
            }
          ]
        },
        {
          "building": "Right building",
          "amount of people": "200000",
          "teams": [
            {
              "party": "sd",
              "vote": "20000"
            },
            {
              "party": "gs",
              "vote": "10000"
            },
            {
              "party": "er",
              "vote": "4000"
            }
          ]
        }
      ]
    }
  ]
}
我想要的是:

Key     | Value
---------------
Kentucky| 3      
我尝试使用的内容返回空值:

function (doc) {
  emit(doc._id, doc.building);
}
结果是:

{"total_rows":3,"offset":0,"rows":[
{"id":"729489bb6702c473bb72254d13003f85","key":"729489bb6702c473bb72254d13003f85","value":null},
{"id":"729489bb6702c473bb72254d13007c22","key":"729489bb6702c473bb72254d13007c22","value":null},
{"id":"729489bb6702c473bb72254d130095fb","key":"729489bb6702c473bb72254d130095fb","value":null}
]}

您必须对CouchDB中的map和reduce函数有很好的了解。 Map函数过滤数据并发出按键排序的键值对。 Reduce函数用于减少map函数的结果。主要编程在于reduce函数,以获得所需的最终结果

对于您的情况,Map函数应该如下

function (doc) {

  for( var i in doc.Projects){

  emit(doc.Projects[i].city,doc.Projects[i].overview);

  }
}
而还原功能应该是

function (keys, values, rereduce) {

   if (rereduce){


     return sum (values);

   }else{


    return values[0].length;
  }
}

您必须对CouchDB中的map和reduce函数有很好的了解。 Map函数过滤数据并发出按键排序的键值对。 Reduce函数用于减少map函数的结果。主要编程在于reduce函数,以获得所需的最终结果

对于您的情况,Map函数应该如下

function (doc) {

  for( var i in doc.Projects){

  emit(doc.Projects[i].city,doc.Projects[i].overview);

  }
}
而还原功能应该是

function (keys, values, rereduce) {

   if (rereduce){


     return sum (values);

   }else{


    return values[0].length;
  }
}

我现在可以显示城市,但是(值)总和返回null?
{“rows”:[{“key”:“Kentucky”,“value”:3}]}
这是我使用相同的文档和mapreduce函数的输出。我现在可以显示城市,但是(值)总和返回null?
{“rows”:[{“key”:“Kentucky”,“value”:3}}
这是我使用相同文档和mapreduce函数的输出。