Я думаю, мне нужно написать функции карты / сокращения.
Да, для этого вам нужно уменьшить карту.Для некоторых простых примеров сокращения карты, пожалуйста, посмотрите здесь .
Для вашего конкретного случая, вам сначала нужно изменить свое ожидание результата.Вывод карты / уменьшить является коллекцией.Коллекция будет выглядеть (в вашем случае) примерно так:
{ key : { 'brand' : 'bmw' }, value : 2 }
{ key : { 'model' : 'i5' }, value : 1 }
Чтобы сгенерировать этот набор, вам понадобится функция «map» и функция «Reduce».Функция map выдаст ключ и значение.Ключом является каждый элемент params, значением является счетчик 1. Функция «Reduce» принимает ключ и массив значений и возвращает только одно значение.Ваш вопрос в основном такой же, как этот пример на сайте MongoDB :
map = function() {
if (!this.params) {
return;
}
for (index in this.params) {
emit(this.params[index], 1);
}
}
reduce = function(previous, current) {
var count = 0;
for (index in current) {
count += current[index];
}
return count;
}