/ / Slabý výkon zistenia ids v mongodb pomocou mongoid a koľajnice 3 - ruby-on-rails-3, mongodb, mongoid, mongoid3

Zlé hľadanie výkonnosti v mongodb pomocou mongoidu a koľajníc 3 - rubínovo-na-koľajniciach-3, mongodb, mongoid, mongoid3

Robím slabý výkon a Model.find(array_of_ids) v mongodbe pomocou mongoidnej jazdy a ja nerozumiem prečo.

Relevantný kód:

ids = get_ids() #Get an array of 137 _ids for Topic model.
Topic.find(ids) #Find all data, but take 4 seconds to do it.

Pole _id je automaticky indexované, takže nepotrebuje žiadnu manuálnu konfiguráciu.

Prečo je to tak pomalé?

Opýtajte sa, či potrebujete viac vysvetlení, a ospravedlňujem sa za moju chudobnú angličtinu.

odpovede:

0 pre odpoveď č. 1

Zdá sa, že ste už dostali riešenie.

Len chcem pridať.

Ak ids môže dosiahnuť 137, myslím, že by ste mali uložiť vzťah v zbierke tém miesto. Je to naopak. Dotaz bude

Topic.where(:id => self.topic_id)

kde sa self vzťahuje na záznam tohto modelu.

Je to vlastne has_many a relationship_to vzťah.

Mongodb schopnosť ukladať pole, neznamenáže pre mnoho (137) záznamov spojených s iným modelom môžete tento spôsob uložiť. Relačná metóda je lepšia. Jednoducho vložte niečo do poľa, ak typ údajov nesúvisí s iným modelom / kolekciou. Napríklad značka témy, ktorá by mohla byť "trendy, dospievajúci, detinský, cheesy, atď. , To je dobrá príležitosť na použitie funkcie poľa s mongodb.

V prípade, že pole obsahuje zoznamy tém, kde sú témami údaje definované v kolekcii Témy, mal byť použitý relačný model.

Len nejaký návrh, prosím, nehlasujte ma.