Mongodb : MapReduce

LAF000 Messages postés 1 Date d'inscription lundi 17 octobre 2016 Statut Membre Dernière intervention 17 octobre 2016 - Modifié par @karamel le 17/10/2016 à 17:10
nagaD.scar Messages postés 4272 Date d'inscription samedi 8 septembre 2007 Statut Membre Dernière intervention 4 janvier 2023 - 19 oct. 2016 à 16:17
Bonjour,
Je teste la fonctionnalité MapReduce avec passage d'un objet.
pour le tester, je compte le nombre de mel pour une adresse dans une base Mongodb.
Je l'ai déjà fait autrement, mais là je veux tester le passage d'objet
l'exécution se passe bien, mais le résultat est, pour la somme : 1.#QNAN0
Si vous pouvez m'aider.
voici mon code :

db.Resultat.drop();
//la fonction map qui va chercher les adresses mel et passe un objet (simple pour le test)
var mapMel = function() {
              emit(this.EMAIL_AGNT, {nbre : 1});
    };
// la fonction reduce qui prend le tableau des objets et qui l'exploite pour en faire la somme
var reduceMel = function( melId, source) {
    var somme = 0;
    source.forEach(function(v) {
            somme +=v.nbre;
    });
 return somme;
};

db.MEL.mapReduce(mapMel, reduceMel, {out: "Resultat"} );

<underline>ou encore</underline>

db.Resultat.drop();


var mapMel = function() {
 var nombre = {nbre:1}
 emit(this.EMAIL_AGNT, nombre);
    };

var reduceMel = function( melId, source) {
    var somme = 0;
    source.forEach(function(v) {
            somme +=v.nbre;
    });
 return somme;
};

db.MEL.mapReduce(mapMel, reduceMel, {out: "Resultat"} );

1 réponse

nagaD.scar Messages postés 4272 Date d'inscription samedi 8 septembre 2007 Statut Membre Dernière intervention 4 janvier 2023 17
19 oct. 2016 à 16:17
Salut,

Je ne connais pas Mongodb, mais ce que je peux te dire c'est que l'erreur indique que ce n est pas une valeur numérique.

Essaye donc de faire
 somme +=parseInt(v.nbre);


et redis moi.

naga
0
Rejoignez-nous