2012-04-24 2 views
-1

このクエリは役に立ちますか?SQLからmongoidへの変更

SELECT nb_user, count(nb_user) as nb_account FROM (
SELECT COUNT(USER.user_id) AS nb_user 
FROM USER 
GROUP BY USER.account_id 
) as toto 
GROUP BY nb_user 

mongoid on my rails 3.2アプリケーションで使用するために翻訳したいと思います。

+1

何を試してみましたか?このサイトは "gimme teh codez"用ではありません。あなた自身でこれを達成しようとしています。 –

+0

私は、結果なしでhttp://kylebanker.com/blog/2009/11/mongodb-advanced-grouping/に従おうとしました。私はaccount_idによってuser_idを数えることができません – user1143818

+0

これにmap/reduceを使用してください – MikDiet

答えて

0

私はこれで良い結果を得ましたが、私はそれが最良の解決策であるとは確信していません。私のコントローラで

:あなたは、これまで

map = {"sum" => 0} 
reduce = "function(doc, prev) { 
if(prev[doc.user_user_id] == null){ 
prev[doc.user_user_id] = 1; 
prev.sum += 1; 
} 
}" 

data = MyLog.collection.group(:key =>'user_account_id', :initial => map, :reduce => reduce) 

data_result = {} 

data.each do |data| 
if data_result[data['sum']].nil? 
data_result[data['sum']] = 1 
else 
data_result[data['sum']] +=1 
end 
end 
関連する問題