我想从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,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] }
]
答案 0 :(得分:3)
关于迭代哈希数组的更紧凑的方法,你可以采用每个元素first
:
result.map(&:first).each do |k, v|
puts k
puts v.count
end
# 12354asdf
# 3
# safakjgh314
# 3