2015-06-07 34 views
1

我的國家的名單:排序大洲

"country": [ 
     { 
      "countryCode": "AD", 
      "countryName": "Andorra", 
      "currencyCode": "EUR", 
      "population": "84000", 
      "capital": "Andorra la Vella", 
      "continentName": "Europe", 
      "continent": "EU", 
      "areaInSqKm": "468.0", 
      "languages": [ 
       "ca" 
      ] 
     }, 
     { 
      "countryCode": "AE", 
      "countryName": "United Arab Emirates", 
      "currencyCode": "AED", 
      "population": "4975593", 
      "capital": "Abu Dhabi", 
      "continentName": "Asia", 
      "continent": "AS", 
      "areaInSqKm": "82880.0", 
      "languages": [ 
       "ar-AE", 
       "fa", 
       "en", 
       "hi", 
       "ur" 
      ] 
     }, 
etc. 

現在我必須寫的Map/Reduce的JSON函數來得到這樣的輸出:

重點:非洲的價值:xxx 關鍵:亞洲價值:xxx 等

其中'價值'代表每個大陸的國家數量。

我已經嘗試過這種地圖功能:

function(doc) { 
    var a 
    { 
     for (a in doc.country){ 
     emit(doc.country[a].continentName, 1) 
     }; 
    } 
} 
+3

您使用哪種語言?你嘗試了什麼? –

+1

@MJM:訂購json對象時要小心。遵從文檔和這個[問題](http://stackoverflow.com/questions/3948206/json-order-mixed-up),它們是無序的。 – albert

+0

@AlexanderPuchkov:我正在使用JSON。我只是添加了我目前的功能。 – MJM

回答

0

地圖功能:

function(doc) { 
    var country = doc.country; 
    var i; 
     for (i in country) { 
      emit (country[i].continentName, 1) 
     }; 
} 

然後,你還要與減少它降低功能

function(keys, values) { 
    return sum(values);} 
+0

謝謝,這對我有用。 :) – MJM

0

我推薦發出值null而不是1並使用內置減少功能_count