Суммарные значения в документах CouchDB - PullRequest
0 голосов
/ 24 ноября 2018

Итак, предположим, у меня есть следующие два документа в CouchDB:

{
   "_id": "197000000002",
   "_rev": "1-fbe819b01108f30d2e9e96f3fb46eff8",
   "country": "130",
   "region": "1",
   "country_txt": "Mexico",
   "nkill": "1",
}

{
       "_id": "197000000003",
       "_rev": "1-fbe819b01108f30d2e9e96f3fb46eff8",
       "country": "130",
       "region": "2",
       "country_txt": "Mexico",
       "nkill": "3",
    }

И я хочу создать представление, которое возвращает мне что-то вроде этого:

Ключ: Мексика, Значение: 4

И это должно происходить с любой другой страной, поэтому все значения в nkill должны суммироваться в зависимости от страны.

Я попробовал следующую функцию карты:

function(doc) {
 if(doc.nkill >= 1){
  emit(doc.country_txt,doc.nkill);
}
}

и следующую функцию уменьшения:

function(keys,values,rereduce) {
  return sum(values);
}

Но пока я не могу получить желаемый результат, который яищу, что я делаю не так и как я могу получить результат, который я ищу?

1 Ответ

0 голосов
/ 24 ноября 2018

В вашей собственности nkill хранится строка.

Я предполагаю, что функция sum () либо объединяет строку, либо выполняет что-то еще для суммирования чисел.

Вы можете попытаться согласовать свои значения с числами в функции карты, и это должно сработать.

Кроме того, вы должны использовать функцию внутреннего уменьшения _sum, если хотите что-то суммировать.Это намного быстрее, поскольку он работает внутри с Erlang.

...