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

Bagaimana cara menggunakan variabel di MongoDB Map-reduce map function

Seperti yang ditunjukkan oleh @Dave Griffith, Anda dapat menggunakan scope parameter mapReduce fungsi.

Saya sedikit kesulitan untuk mencari cara untuk meneruskannya dengan benar ke fungsi karena, seperti yang ditunjukkan oleh orang lain, dokumentasinya tidak terlalu detail. Akhirnya, saya menyadari bahwa mapReduce mengharapkan 3 params:

  • fungsi peta
  • mengurangi fungsi
  • objek dengan satu atau beberapa parameter yang ditentukan dalam dokumen

Akhirnya, saya sampai pada kode berikut dalam Javascript:

// I define a variable external to my map and to my reduce functions
var KEYS = {STATS: "stats"};

function m() {
    // I use my global variable inside the map function
    emit(KEYS.STATS, 1);
}

function r(key, values) {
    // I use a helper function
    return sumValues(values);
}

// Helper function in the global scope
function sumValues(values) {
    var result = 0;
    values.forEach(function(value) {
        result += value;
    });
    return result;
}

db.something.mapReduce(
    m,
    r,
    {
         out: {inline: 1},
         // I use the scope param to pass in my variables and functions
         scope: {
             KEYS: KEYS,
             sumValues: sumValues // of course, you can pass function objects too
         }
    }
);


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Kembalikan hanya elemen sub-dokumen yang cocok dalam array bersarang

  2. Cara memfilter array dalam subdocument dengan MongoDB

  3. konversi tanggal iso ke stempel waktu dalam kueri mongo

  4. Mengapa Mongoose menambahkan array kosong?

  5. (simpul:3341) Peringatan Penghentian:Mongoose:mpromise