2015-03-31 2 views
1

Я пытаюсь написать представление в Couchbase с помощью сокращения, такого как _count, который даст мне количество продуктов по адресу.Couchbase View _count Уменьшить для заданных клавиш

У меня есть несколько документов в базе данных в следующем формате;

Документ 1

{ 
    id: 1, 
    address: { 
     street: 'W Churchill St' 
     city: 'Chicago', 
     state: 'IL', 
    }, 
    product: 'Cable' 
} 

Документ 2

{ 
    id: 2, 
    address: { 
     street: 'W Churchill St' 
     city: 'Chicago', 
     state: 'IL', 
    }, 
    product: 'Cable' 
} 

Документ 3

{ 
    id: 3, 
    address: { 
     street: 'W Churchill St' 
     city: 'Chicago', 
     state: 'IL', 
    }, 
    product: 'Satellite' 
} 

Документ 4

{ 
    id: 4, 
    address: { 
     street: 'E Foster Rd' 
     city: 'New York', 
     state: 'NY', 
    }, 
    product: 'Free To Air' 
} 

У меня уже есть представление, которое дает мне все продукты по адресу, который использует составной ключ, такие как;

emit([doc.address.street, doc.address.city, doc.address.state], null) 

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

Я хочу, чтобы иметь возможность видеть, для массива «ключей»

['W Churchill St','Chicago','IL'] 
['E Foster Rd','New York','NY'] 

, какие продукты и подсчета их. Поэтому я бы ожидал увидеть мои результаты.

'Cable' : 2, 
'Satellite': 1, 
'Free To Air': 1 

однако, если я указал только этот "ключ",

['W Churchill St','Chicago','IL'] 

я бы ожидал увидеть

'Cable' : 2, 
'Satellite': 1 

Как написать мой взгляд, чтобы приспособить это?

ответ

2

Решение этого заключалось в том, чтобы добавить мой продукт к ключу;

emit([doc.address.street, doc.address.city, doc.address.state, doc.product], null) 

Then using;

?start_key=[street,city,state]&end_key=[street,city,state,{}]&group_level=4 

Результат:

{"rows":[ 
    {"key":['W Churchill St','Chicago','IL','Cable'], "value":2}, 
    {"key":['W Churchill St','Chicago','IL','Satellite'], "value":1} 
]} 

Я тогда должен был бы повторить этот запрос для каждого из адресов и подвести итоги.

Смежные вопросы