MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Mongodb:array agregat bilangan bulat untuk setiap posisi array

Saya pikir Anda perlu pengurangan peta untuk ini, untuk menulis fungsi yang dapat mengakses posisi tertentu dalam array. Anda dapat mencoba sesuatu seperti ini:

Fungsi pemetaan:

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

Kurangi fungsi:

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

Anda kemudian dapat menjalankan fungsi mapReduce berikut pada koleksi Anda:

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

Dan itu akan memberi Anda hasil yang diinginkan berikut ini!

{
"_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
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bagaimana cara menerapkan kueri filter pencarian menggunakan mongodb?

  2. mongodb $exists selalu mengembalikan 0

  3. MongoDB dengan redis

  4. Menggunakan Jade untuk mengulangi JSON

  5. MongoDB :Bagaimana cara mengalikan bidang yang hanya muncul di $project?