2017-08-02 99 views
0

我們在ruby on rails項目中使用mongoid,我需要一個簡單的用戶列表,按照用於查找正確結果集的ID進行排序。使用mongoid按照輸入數組的順序排序查詢

所以基本上是這樣的:

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

這給出了一個清單回來索引的UID排序。

但它需要排序ids陣列。

有沒有一種簡單的方法來做到這一點與mongoid?謝謝。

+0

的可能的複製https://stackoverflow.com/questions/7533104/mongoid-find-through-array-of-ids – MrYoshiji

回答

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]); 
+0

但我想通過不是由uid的ID數組的順序。這就是問題的全部。 – Calmon

+0

我編輯了一個解決方案,但我需要檢查 – gururuby

+0

謝謝,有沒有辦法保留結果對象類型,因爲我想使用.only .skip .limit等等,而且我不能用Mongo ::收藏::查看::聚合 – Calmon