我想从mongoid group_by而不是数组
中检索一个hashmapProduct.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