【发布时间】:2017-03-16 05:50:49
【问题描述】:
我有一个 JSON 集合作为数组。我想按集合中的三个字段分组,然后返回结果以及匹配文档的数量。下面的示例有望使其更清晰。
返回的 JSON 文档集合:
[
{
_id: 1,
browser: 'chrome',
ipAddress: '222.111.111.0',
uri: 'example1.com'
},
{
_id: 2,
browser: 'chrome',
ipAddress: '222.111.111.0',
uri: 'example1.com'
},
{
_id: 3,
browser: 'opera',
ipAddress: '222.0.888.0',
uri: 'example1.com'
},
{
_id: 4,
browser: 'chrome',
ipAddress: '222.111.222.0',
uri: 'sample1.com'
},
{
_id: 5,
browser: 'chrome',
ipAddress: '222.111.222.0',
uri: 'sample1.com'
},
{
_id: 6,
browser: 'chrome',
ipAddress: '222.111.222.0',
uri: 'sample1.com'
},
{
_id: 7,
browser: 'opera',
ipAddress: '222.111.222.0',
uri: 'sample1.com'
}
]
应该对浏览器、ipAddress 和 uri 进行分组,然后返回分组结果以及下面的计数(我检查了几次,所以我希望下面的数字加起来就是上面每个组合的实例!)。
[
{
browser: 'chrome',
ipAddress: '222.111.111.0',
uri: 'example1.com',
count: 2
},
{
browser: 'opera',
ipAddress: '222.0.888.0',
uri: 'example1.com',
count: 1
},
{
browser: 'chrome',
ipAddress: '222.111.222.0',
uri: 'sample1.com',
count: 3
},
browser: 'opera',
ipAddress: '222.111.222.0',
uri: 'sample1.com',
count: 1
]
我知道使用 map/reduce 应该很容易做到这一点,但我似乎无法让我的大脑困惑如何做到这一点!
提前致谢。
【问题讨论】:
标签: javascript json node.js mapreduce reduce