2010-09-15 12 views
17

Używam kodu Ruby do obliczenia sumy z tablicy zwróconej przez Mongoida.Czy Mongoid ma mapę/redukcję?

Ale może za pomocą Map/Reduce może być szybciej, z wyjątkiem nie widzę żadnych docs dla Map Reduce na mongoid.org i Google dla

map reduce site:mongoid.org 

nie daje żadnego rezultatu albo. (Lub za pomocą MapReduce lub Map/Reduce)

Istnieje Docs na stronie MongoDB za

map reduce site:mongodb.org 

ale trzeba używać Map Reduce z Mongoid również.

Odpowiedz

21

Można użyć mapę zmniejszyć z Mongoid jak mogłeś poprzez sterownik Ruby bezpośrednio:

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

Dla niektórych przykładów robi mapa zmniejszyć w sterowniku Ruby, zobacz this blog post Kyle Banker (opiekuna Ruby Sterownik MongoDB).

+0

hm, więc jest to przejście na niższy poziom trasy przy użyciu sterownika Ruby dla MongoDB ... nie za pomocą Mongoid per se? Może jeśli Mongoid ma to bezpośrednio, to może być lepiej ... (czy posiadanie Mongoida sugeruje, że masz również sterownik Ruby, czy też musi być oddzielny?) Jeśli teraz użyję 'Analytics.collection', to zwróci' Mongoid :: Obiekt kolekcji. 'Analytic.collection.methods.grep/map /' => '[" mapreduce "," map_reduce "]', więc zdefiniowano map_reduce. –

+2

Mongoid uruchamia się na sterowniku Ruby, a użycie powyższej metody po prostu przekazuje funkcje do sterownika Ruby. – PreciousBodilyFluids

+0

, więc może Mongoid umieści to w swoich oficjalnych dokumentach, huh? ten Mongoid obsługuje Map/Reduce za pomocą sterownika Ruby. –