mongoid group_by返回一个哈希图,而不是一系列哈希



我想从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,Produck3], " safakjgh314" => [Product4,Product5,Produck6]}

是否有更有效的方法来执行此操作?

编辑***分组后,我宁愿用枚举的算法进行操作,这是有道理的。

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

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

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

最新更新