我正在尝试使用诸如_count之类的reduce在Couchbase中编写一个视图,它会给我一个地址上的产品计数。
我在数据库中有以下格式的一些文档;
文件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
如何编写我的视图以适应这种情况?
答案 0 :(得分:2)
解决这个问题的方法是将我的产品附加到关键字上;
emit([doc.address.street, doc.address.city, doc.address.state, doc.product], null)
然后使用;
?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}
]}
然后我需要为每个地址重复此查询并对结果求和。