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

Sorting a query in order of an input array using mongoid

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

所以基本上是这样的:

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

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

但需要按ids数组排序。

有没有一种简单的方法可以用 mongoid 做到这一点?谢谢

使用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]);