8
我通过MapReduce获取了大量的ID。我已经按照某些标准对这些ID进行了排序,现在我需要按以下顺序获取这些对象:Mongoid:通过ID数组查找
MyModel.find(ids)
对不对?但它返回的对象不是按照ID存储的顺序。看起来像
MyModel.where(:_id.in => ids)
它不会以与存储的ID相同的顺序返回提取的对象。现在
我能做到这一点
ids.map{|id| MyModel.find(id)}
这将做的工作,但它会敲数据库很多很多次。
它是更快然后从数据库中获取每个项目? – fl00r
@ fl00r:应该是,只需一个MongoDB访问权即可获取模型和一个简单的排序(使用内置的Schwartzian变换),以便按照所需的顺序获取事物。数据库访问通常是昂贵的部分。尝试对它进行基准测试,如果没有真实数据的访问就很难保证。 –
@ muistooshort,我正面临类似的问题。一般来说,将db命中最小化是更好的做法吗? –