我們在ruby on rails項目中使用mongoid,我需要一個簡單的用戶列表,按照用於查找正確結果集的ID進行排序。使用mongoid按照輸入數組的順序排序查詢
所以基本上是這樣的:
ids = [7, 1, 3]
User.where(:uid.in => ids)
這給出了一個清單回來索引的UID排序。
但它需要排序ids
陣列。
有沒有一種簡單的方法來做到這一點與mongoid?謝謝。
我們在ruby on rails項目中使用mongoid,我需要一個簡單的用戶列表,按照用於查找正確結果集的ID進行排序。使用mongoid按照輸入數組的順序排序查詢
所以基本上是這樣的:
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]);
的可能的複製https://stackoverflow.com/questions/7533104/mongoid-find-through-array-of-ids – MrYoshiji