MongoDB聚合Frameworkt到Map-Reduce

时间:2018-11-13 15:46:37

标签: mongodb mapreduce aggregation-framework

我正在尝试使用Map-Reduce而不是聚合框架,但是我真的很挣扎,我找不到关于如何处理它的任何好的教程。假设我有一个汇总,返回的是女性和男性的平均体重和身高。

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 

0 个答案:

没有答案