2011-11-15 5 views
1

J'ai une fonction de réduction de mappe qui, pour des raisons d'efficacité, ne doit pas être exécutée immédiatement. Donc, je l'ai divisé en fonction d'une gamme d'identifiants, et par conséquent, je reçois un tas de collections séparées. Je veux maintenant les rejoindre et combiner tous les résultats de mapreduce. La table résultante devrait toujours avoir seulement une clé, et un tableau de valeurs avec les valeurs combinées de la table temporaire.MongoDb - Rejoindre une tâche mapreduce scindée

J'ai essayé d'utiliser « réduire » dans ma sortie comme si, de sorte que la table existante juste est mis à jour, mais cela ne fonctionne pas: il me donne

res = db.People.mapReduce(m, r, {query:{xyz}, out:{reduce:"FoodPerPeople"}}); 

(modifier) tableaux imbriqués :

{ 
    "_id" : "Banana", 
    "value" : ["Bart", ["Joe"]] 
} 

Je comprends pourquoi cela est happening-- la fonction re-reduce traite le tableau des valeurs entrées comme une valeur en soi.

Exemple de ce que je cherche:

COLLECTION 1:

{ 
    "_id" : "Banana", 
    "value" : ["Bart"] 
} 

COLLECTION 2:

{ 
    "_id" : "Banana", 
    "value" : ["Joe"] 
} 

COLLECTION COMBINÉ: - Comment puis-je obtenir?

{ 
    "_id" : "Banana", 
    "value" : ["Bart", "Joe"] 
} 
+0

Pouvez-vous clarifier "cela ne fonctionne pas"? Avez-vous une erreur ou des résultats inattendus? – dcrosta

+0

S'il vous plaît voir mes modifications – carlbenson

+0

Merci. Pouvez-vous également montrer votre carte et réduire les fonctions? – dcrosta

Répondre

0

Il est probable que vous ayez une fonction de réduction qui ne peut pas rétablir des données déjà réduites. Vous devriez lire ceci technical explanation et essayer de faire correspondre votre fonction de réduction à ce critère.