Couchbase View _count 减少给定键

Couchbase View _count Reduce For Given Keys

我正在尝试使用诸如 _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)

现在这让我进入了实际问题,我希望能够计算一个或多个地址的产品数量。

我希望能够看到 "keys"

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

哪些产品及其数量。所以我希望在我的结果中看到。

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

但是,如果我只指定了这个 "key",

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

我希望看到

'Cable' : 2,
'Satellite': 1

如何编写我的视图以适应这种情况?

解决方法是像这样将我的产品附加到密钥上;

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}
]}

然后我需要对每个地址重复此查询并对结果求和。