Comment utiliser des variables dans MongoDB réduire la Carte la carte la fonction
Donné un document
{_id:110000, groupings:{A:'AV',B:'BV',C:'CV',D:'DV'},coin:{old:10,new:12}}
Mes specs appel pour la spécification des attributs de la cartographie et de l'agrégation au moment de l'exécution, comme les groupements intéressent l'utilisateur ne sont pas connus à l'avant, mais spécifié par l'utilisateur lors de l'exécution.
Par exemple, un utilisateur de spécifier [A,B] qui sera la cause de la cartographie des émissions de
emit( {A:this.groupings.A,B:this.groupings.B},this.coin )
tandis qu'un autre aurait envie de spécifier [A,C] qui sera la cause de la cartographie des émissions de
emit( {A:this.groupings.A,C:this.groupings.C},this.coin )
B/c le mappeur et réducteur de fonctions exécuter côté serveur, et n'ont pas accès aux variables de client, je n'ai pas été en mesure de trouver un moyen d'utiliser une variable de carte de clé dans le mappeur de fonction.
Si je pouvais référence à une liste de choses à un groupe par dans le champ d'application de l'exécution de la fonction map, tout cela est très simple. Cependant, b/c la fonction de mappage finit par obtenir ces à partir d'un champ d'application différent, je ne sais pas comment faire, ou si c'est encore possible.
Avant que je commence à essayer de créer dynamiquement des java script à exécuter par le biais du pilote, quelqu'un a une meilleure suggestion? Peut-être un 'groupe' de la fonction sera de gérer ce scénario mieux?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez passer mondiale, données en lecture seule dans la carte-réduire les fonctions à l'aide de la "portée" de paramètres sur la carte-réduire de commande. Ce n'est pas très bien documenté, je le crains.
Comme l'a souligné @Dave Griffith, vous pouvez utiliser le
scope
paramètre de lamapReduce
fonction.J'ai un peu de mal à comprendre comment le passer à la fonction, car, comme souligné par d'autres, la documentation n'est pas très détaillé. Enfin, j'ai réalisé que
mapReduce
attend 3 paramètres:Finalement, je suis arrivé à la suite de code en Javascript:
map
ou monreduce
. Ils sont définis comme des fonctions standard et je les passe à lascope
objet comme dans mon exemple ci-dessus.