sql >> Database >  >> NoSQL >> MongoDB

Variabelen gebruiken in MongoDB Map-reduce map-functie

Zoals aangegeven door @Dave Griffith, kunt u de scope . gebruiken parameter van de mapReduce functie.

Ik worstelde een beetje om erachter te komen hoe ik het op de juiste manier aan de functie kon doorgeven, omdat, zoals door anderen werd opgemerkt, de documentatie niet erg gedetailleerd is. Ten slotte realiseerde ik me dat mapReduce verwacht 3 parameters:

  • kaartfunctie
  • functie verminderen
  • object met een of meer van de parameters gedefinieerd in het document

Uiteindelijk kwam ik tot de volgende code in 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. Naamgevingsconventie en geldige tekens voor een Redis-sleutel

  2. Lua-script en redis - hoe te testen op Geen-waarde

  3. Grote gegevensworkflows met panda's

  4. Voordelen van MongoDB | Nadelen van MongoDB