У меня есть коллекция 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, но я не могу понять, как это сделать!
Заранее спасибо.