sql >> Database teknologi >  >> NoSQL >> MongoDB

Mongodb:aggregeret matrix af heltal for hver matrixposition

Jeg tror, ​​du skal bruge kortreducering til dette, for at kunne skrive en funktion, der kan få adgang til bestemte positioner i arrayet. Du kan prøve noget som dette:

Kortfunktion:

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

Reducer funktion:

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;     
}

Du kan derefter køre følgende mapReduce-funktion på din samling:

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

Og det burde give dig følgende ønskede resultat!

{
"_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. Redis pub sub max abonnenter og udgivere

  2. Implementering af applikationer på CDP Operational Database (COD)

  3. MongoDB-godkendelse er ikke aktiveret på Linux Server

  4. MongoDB's count() returnerer forkert 0, hvis der gives en forespørgsel