Framework агрегации MongoDB для Map-Reduce - PullRequest
0 голосов
/ 13 ноября 2018

Я пытаюсь использовать Map-Reduce вместо агрегации Framework, но я действительно борюсь с этим, я не могу найти хорошие учебники о том, как с этим бороться.Допустим, у меня есть агрегат, который возвращает средний вес и рост людей, различающихся по мужчинам и женщинам.

db.people.aggregate
(
    {
        $group:
        {
            _id:"$sex",
            avgHeight: {$avg: {$toDouble:"$height"}},
            avgWeight: {$avg: {$toDouble:"$weight"}},

        }
    }   
)

Итак, я предполагаю, что мне нужно сделать функцию карты, которая излучает: пол, рост и вес, чтобы она выгляделакак это:

var mapFunction1 = function() {
emit(this.sex, this.height, this.weight);
 };

Затем функция уменьшения, которая возвращает среднюю высоту:

var reduceFunction1 = function(keySex, valuesHeight) {
    return Array.avg(valuesHeight);
};

И вторая функция уменьшения для веса:

var reduceFunction2 = function(keySex, valuesWeight) {
    return Array.avg(valuesWeight);
};

И, наконец, я вызываювсе вышло:

db.people.mapReduce(
    mapFunction1,
    reduceFunction1,
    reduceFunction2,
    { out: "map_reduce_example" }
)

и когда я пытаюсь запустить его, я получаю ошибку

2018-11-13T17:34:03.372+0100 E QUERY    [js] TypeError: c.out is undefined :
DBCollection.prototype.mapReduce@src/mongo/shell/collection.js:1135:1
@przyklad.js:12:1
failed to load: przyklad.js 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...