sql >> Databáze >  >> NoSQL >> MongoDB

Jak používat proměnné ve funkci MongoDB Map-reduce map

Jak zdůraznil @Dave Griffith, můžete použít scope parametru mapReduce funkce.

Trochu jsem se snažil přijít na to, jak to správně předat funkci, protože, jak zdůrazňovali ostatní, dokumentace není příliš podrobná. Nakonec jsem si uvědomil, že mapReduce očekává 3 parametry:

  • funkce mapy
  • snížit funkci
  • objekt s jedním nebo více parametry definovanými v dokumentu

Nakonec jsem došel k následujícímu kódu v Javascriptu:

// 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. První kroky s Redis

  2. Co je to kurzor v MongoDB?

  3. MongoDB:výjimka v initAndListen:20 Pokus o vytvoření souboru zámku v adresáři pouze pro čtení:/data/db, ukončení

  4. MongoDB $existuje