我想從mongoid GROUP_BY代替陣列獲取一個HashMap的陣列是一個HashMapmongoid GROUP_BY返回,而不是散列
Product.group_by {|p| p.user_id }
返回映射的數組
result = Product.group_by {|p| p.user_id }
=> [ {"12354asdf" => [product1, product2, product3]},
{"safakjgh314" => [product4, product5, product6]} ]
我目前運行以下查詢的結果以實現映射的單個散列
result.reduce Hash.new, :merge
=> { 「12354asdf」=> [產品1,產品2,產品3], 「safakjgh314」=> [product4的,產品5,產品6]}
是有一個更有效的方式來做到這一點?
編輯*** 分組後,我寧願在集合上操作一個有意義的枚舉。
result.each do |k v| k v end
而不是
result.each do |h| h.keys.first, h.values.first end
例如它當前返回。
[
{user_object => [item1, item2, item3] },
{user2_object => [item1, item2, item3] },
{user2_object => [item1, item2, item3] }
]
的方法,這裏基本上實現了[組](HTTP://docs.mongodb .org/manual/reference/method/db.collection.group /)方法。結果按設計返回爲數組。即使是像findOne這樣的操作,也只是像你的代碼一樣包裝標準方法。 –
您希望它如何更高效? –
格式化的時髦我給原問題添加評論 –