2010-09-15 6 views
17

J'utilise le code Ruby pour calculer la somme à partir du tableau retourné par Mongoid.Est-ce que Mongoid a Map/Reduce?

Mais en utilisant peut-être Map/Reduce peut être plus rapide, sauf que je ne vois pas de documents pour la carte Réduire le mongoid.org et Google pour

map reduce site:mongoid.org 

ne donne pas non plus aucun résultat. (Ou en utilisant MapReduce ou Map/Reduce)

Il y a docs sur le site de MongoDB

map reduce site:mongodb.org 

mais doivent utiliser la carte Réduire avec MongoId ainsi.

Répondre

21

Vous pouvez utiliser la carte Réduire avec MongoId tout comme vous pourriez par le pilote Ruby directement:

# Post is a Mongoid model... 
Post.collection.map_reduce(map_function, reduce_function, options) 

Pour quelques exemples de faire réduire la carte dans le pilote Ruby, voir this blog post par Kyle Banker (mainteneur du Ruby Pilote MongoDB).

+0

hm, il s'agit donc d'utiliser une route de niveau inférieur en utilisant le pilote Ruby pour MongoDB ... et non en utilisant Mongoid en soi? Peut-être que si Mongoid l'a directement, ça peut être mieux ... (est-ce que Mongoid implique que vous avez aussi le pilote Ruby ou doit être séparé?) En ce moment, si j'utilise 'Analytics.collection' il retourne un' Mongoid :: Objet de collection. 'Analytic.collection.methods.grep/map /' => '[" mapreduce "," map_reduce "]', donc map_reduce est défini. –

+2

Mongoid s'exécute en haut du pilote Ruby, et l'utilisation de la méthode ci-dessus transmet simplement les fonctions au driver Ruby. – PreciousBodilyFluids

+0

alors peut-être que Mongoid peut mettre ça dans leurs docs officiels hein? que Mongoid supporte Map/Reduce en utilisant le driver Ruby. –