2012-03-13 57 views
4

在我的Rails應用程序中,我想用唯一值獲取最後10條記錄。Mongoid查詢!限制和訂單的組合

我想:

@users = User.all(:limit => 10, :sort => [:created_at, :desc]).map{|t| t.first_name}.uniq 

但是,

如我所料的限制不起作用..

我想要的 '限價' 影響到最後的查詢。

有什麼想法?

回答

11
@users = User.desc(:created_at).limit(10).map(&:first_name).uniq 

您應該使用distinct。有可能uniq會使您獲得少於10條記錄。

@users = User.limit(10).distinct(:first_name).desc(:created_at).map(&:first_name) 
+0

其實問題在於我用uniq獲得的數量少於10個。 不幸的是,第二行給出:[]的未定義方法'limit':Array – Lamp 2012-03-13 03:35:58

+0

@vic:方法的排序可能是錯誤的。我目前無法測試。嘗試編輯的版本。 http://mongoid.org/docs/querying/criteria.html#limit – Kyle 2012-03-13 03:46:20

+0

看來@users = User.limit(10).desc(:created_at).distinct(:first_name)幾乎可以工作!但忽略排序順序'desc'..也試過order_by([:created_at,:desc])..但不排序..感謝您的時間! – Lamp 2012-03-13 04:08:58