MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak używać zmiennych w funkcji mapy MongoDB Map-reduce

Jak zauważył @Dave Griffith, możesz użyć scope parametr mapReduce funkcja.

Trochę się zmagałem, aby dowiedzieć się, jak poprawnie przekazać to do funkcji, ponieważ, jak podkreślają inni, dokumentacja nie jest zbyt szczegółowa. Wreszcie zdałem sobie sprawę, że mapReduce oczekuje 3 parametrów:

  • funkcja mapy
  • funkcja redukcji
  • obiekt z co najmniej jednym parametrem zdefiniowanym w dokumencie

W końcu dotarłem do następującego kodu w 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. MongoDB $strLenCP

  2. Utwórz wielojęzyczny indeks tekstowy w MongoDB

  3. Nie można zablokować dokumentu mongodb. A jeśli muszę?

  4. Ochrona danych z ClusterControl

  5. Agregacja MongoDB w pętli zwrotnej