2012-02-21 112 views
1

我在查找如何使用MongoDB/Mongoid在這裏查詢時遇到了問題。所以我有一個型號Userhas_many :scores,Score是另一種型號,有codevalue。 在user的範圍內是獨一無二的。對於給定的代碼,我想獲得用戶,按照scorevalue排序。根據字段關聯排序集合

基本上,我想要做的是這樣的:User.where('scores.code' => code).order_by('scores.value'),除了它不能這樣做。我試過幾件事情,我認爲答案是關係到User.where(:scores.matches => {:code => code}),但這並不能返回我什麼,所以我必須缺少的東西在這裏..

感謝您的時間,希望我很清楚!

+0

,我改造成實現我想要的,但我仍然對答案感興趣。 – ksol 2012-02-21 16:35:04

+0

嗨,我有點困惑你的問題。你提到,每個用戶的代碼都是唯一的。但是你的例子'User.where('scores.code'=> code).order_by('scores.value')'意味着有許多用戶共享代碼。 – Ren 2012-02-21 21:30:30

+0

對於給定的代碼,用戶將有0或1個相應的分數。但其他用戶也可以(也將會)擁有這個級別的分數。這就是我所說的'在用戶範圍內獨一無二' – ksol 2012-02-21 21:49:21

回答

1

我想這可能是你想要什麼:

scores = Score.where('code' => code).order_by('value') 

如果你想獲得用戶(假設分數類有belongs_to :user),那麼你可以這樣做:FYI

users_that_matches_code = scores.map { |s| s.user }