MapReduce aracılığıyla bir dizi kimlik aldım. Bu kimlikleri bazı ölçütlere göre sıralıyorum ve şimdi bu nesneleri şu sırayla almam gerekiyor:Moğol: iray dizisini bul
MyModel.find(ids)
Doğru? Ancak, sipariş kimlikleri saklanmayan nesneler döndürür. Bu saklı kimlikleri olarak sadece aynı sırayla getirilen nesneler döndürmez sadece aynı
olarakMyModel.where(:_id.in => ids)
gibi görünüyor.
Şimdi iş yapacak bu
ids.map{|id| MyModel.find(id)}
yapabilirsiniz ama veritabanını birçok defalarca yere vuracak.
her öğeyi db'den daha hızlı mı alıyor? – fl00r
@ fl00r: Modelleri almak için tek bir MongoDB erişimi ve istenen sırada bir şeyler almak için basit bir sıralama (Schwartzian Transform ile inşa edilmiş) olmalıdır. Veritabanı erişimi genellikle pahalı bir parçasıdır. Kıyaslamayı deneyin, gerçek verilere erişim olmadan hiçbir şeyi garanti etmek zordur. –
@muistooshort, Benzer bir sorunla karşı karşıyayım. Genel olarak, db isabetleri en aza indirmek için daha iyi bir uygulama olacağını doğru mu? –