Mongoid:按照顺序检索对象

时间:2011-02-08 04:29:01

标签: mongoid

假设:

  

提到= [ “2”, “1”, “3”]

     

unranked = User.where(:nickname.in =>提及).map

输出与提供的数组中的顺序不匹配

  

输出是随机的=> 3,1,2

     

我希望它按原始数组=> 2,1,3

1 个答案:

答案 0 :(得分:1)

我有同样的问题,我这样解决了:

mentions=["foo","bar","baz"]

ranked = User.where(:nickname.in => mentions).sort do |a, b|
  mentions.index(a.nickname) <=> mentions.index(b.nickname)
end

不是最优雅的解决方案,因为我在应用程序中排序而不是在数据库引擎上排序但是嘿..它可以工作(在小列表上)。