使用mongoid按输入数组的顺序对查询进行排序

时间:2017-08-02 12:06:31

标签: ruby-on-rails ruby mongoid

我们在rails项目中的ruby中使用mongoid,我需要一个简单的用户列表,按照我用来查找正确结果集的ID排序。

所以基本上是这样的:

ids = [7, 1, 3]
User.where(:uid.in => ids)

这会给出一个按索引的UID排序的列表。

但它需要按ids数组排序。

使用mongoid有一个简单的方法吗?感谢。

1 个答案:

答案 0 :(得分:1)

使用User.where(:uid.in => ids).order_by(uid: :asc)

或在序列重要时使用聚合

ids = [1, 2, 3]
match = { "$match" => {"uid" => {"$in" => ids } } }
field = { "$addFields" => { "__order" => { "$indexOfArray" => [ ids, "$uid" } } }
sort = { "$sort" : { "__order" : 1 } };
User.collection.aggregate([match, field, sort]);