sql >> データベース >  >> NoSQL >> MongoDB

Mongodb:各配列位置の整数の集合配列

    配列内の特定の位置にアクセスできる関数を作成するには、このためにmapreduceが必要になると思います。次のようなことを試すことができます:

    マッピング機能:

    var M = function() { 
        emit( this.agent, { score : this.score, qv : this.qv } )
    }
    

    削減機能:

    var R = function(key, values) {
        var result = { score : [0, 0, 0], qv : [0, 0, 0, 0, 0] };
        values.forEach( function(value) {
            for ( var i = 0; i < value.score.length; i ++ ) {
                result.score[i] += parseInt(value.score[i]);
            }
            for ( var i = 0; i < value.qv.length; i ++ ) {
                result.qv[i] += parseInt(value.qv[i]);
            }
        });
        return result;     
    }
    

    次に、コレクションで次のmapReduce関数を実行できます。

    db.foo.mapReduce( M, R, { out : "resultCollection" } )
    

    そして、それはあなたに次の望ましい結果を与えるはずです!

    {
    "_id" : "006",
    "value" : {
        "score" : [2, 1, 0],
        "qv" : [ 3, 0, 3, 0, 2 ]
    }
    }
    {
    "_id" : "007",
    "value" : {
        "score" : [ 1, 0, 0],
        "qv" : [ 1, 0, 1, 0, 0]
    }
    

    }




    1. NoSQLソリューションの比較はありますか(特定の状況ではどちらが優れていますか?)

    2. マングースで列挙型を作成して使用する方法

    3. Redis2.6.11でUNSUBSCRIBEコマンドを使用する方法

    4. mongodbの利点はスキーマがないことであると想定されているのに、なぜmongooseはスキーマを使用するのですか?