Pobrałem liczbę identyfikatorów przez MapReduce. Posortowałem te identyfikatory według pewnych kryteriów i teraz potrzebuję uzyskać te obiekty w tej konkretnej kolejności:Mongoid: znajdź poprzez tablicę identyfikatorów
MyModel.find(ids)
Dobrze? Ale zwraca obiekty nie w kolejności ids są przechowywane. Wygląda na to, że jest on taki sam, jak ten, który nie będzie zwracał pobranych obiektów w tej samej kolejności co zapisane identyfikatory.
Teraz mogę to zrobić
ids.map{|id| MyModel.find(id)}
który będzie wykonać zadanie, ale będzie wbić się baza danych, wiele razy.
czy jest to szybsze niż pobieranie każdego elementu z db? – fl00r
@ fl00r: Powinien być, tylko jeden MongoDB dostęp do pobierania modeli i prostego sortowania (z wbudowaną transformacją Schwartzian), aby uzyskać rzeczy w pożądanej kolejności. Dostęp do bazy danych jest zazwyczaj drogą częścią. Spróbuj przeprowadzić analizę porównawczą, trudno jest zagwarantować wszystko bez dostępu do prawdziwych danych. –
@muistooshort, mam do czynienia z podobnym problemem. Ogólnie jest prawdą, że lepiej byłoby zminimalizować liczbę odwiedzin baz danych? –