Получение общего количества отображенных/уменьшенных записей в CouchDB

Данные на диване имеют запись для каждого типа контакта следующим образом.

[{
  "_id":"1"
  "contact_type":"AA"
  "contact_email" : "[email protected]"
},{
  "_id":"2"
  "contact_type":"BB"
  "contact_email" : "[email protected]"
},{
  "_id":"3"
  "contact_type":"CC"
  "contact_email" : "[email protected]"
},{
  "_id":"4"
  "contact_type":"AA"
  "contact_email" : "[email protected]"
},
{
  "_id":"5"
  "contact_type":"BB"
  "contact_email" : "[email protected]"
}]

Записи 1,2,3 представляют контакт с электронной почтой [email protected], а записи 4 и 5 представляют контакт с электронной почтой [email protected].

Моя задача состоит в том, чтобы построить запрос для получения общего количества уникальных контактов (в данном случае 2), но я не уверен, как этого можно достичь.

В настоящее время у меня есть функция карты с уменьшением _count

function(doc){
  emit(doc.emailAddress, 1);
}

который возвращает

{
  "rows":
    {
      "key" : "[email protected]",
      "value" : 3
    },
    {
      "key" : "[email protected]",
      "value" : 2
    }
}

Однако мне нужно общее количество этих записей выше, т.е. что-то вроде

{
  "total" : 2
}

(Примечание: база данных велика, поэтому циклически просматривать сопоставленное/сокращенное представление для подсчета записей нельзя)


person Aram    schedule 05.02.2018    source источник


Ответы (2)



Установите для функции сокращения значение _count, и она должна делать то, что вы хотите.

В вашем случае вы также можете использовать _sum.

person xpqz    schedule 06.02.2018