mongoid group_by返回一个hashmap而不是一个哈希数组

时间:2014-01-18 04:22:32

标签: ruby-on-rails ruby mongodb mongoid

我想从mongoid group_by而不是数组

中检索一个hashmap
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”=> [product1,product2,product3],       “safakjgh314”=> [product4,product5,product6]}

有更有效的方法吗?

编辑*** 在分组之后,我宁愿使用一个有意义的可枚举操作集合。

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] }
]

1 个答案:

答案 0 :(得分:3)

关于迭代哈希数组的更紧凑的方法,你可以采用每个元素first

result.map(&:first).each do |k, v|
  puts k
  puts v.count
end
# 12354asdf
# 3
# safakjgh314
# 3