6

次のようにコレクションで機能する map reduce 関数があります。

function Map() {
    emit (
        this.name, 
        { 
            count : 1,
            flag : this.flag

        }
    );
}
function Reduce(key, values) {
    var count = 0;
    var flag = false;

    for (var i in values){
        count = count + 1;
        if (i.flag)
             flag = true;
    }

    var reduced = {
        count : count,
        flag  : flag
    }
    return reduced;
}
function Finalize(key, reduced) {

    if (reduced.count>10 || reduced.flag){
        var finalized = {
            "count" : reduced.count 
        }
        return reduced;
    }

    return null;
}

私がやろうとしているのは、Finalize が特定のしきい値 (たとえば、count>10) を超えるオブジェクトのみを返すことです。現在、オブジェクトはまだ返されており、カウントは null です。

何か案は?

4

2 に答える 2

2

できません。
Finalize は値の形式のみを変更できますが、キーをキャンセルすることはできません (これは実際には map フェーズが発行することによって決定されます)。

于 2018-11-29T15:50:47.627 に答える