의 배열의 해시 맵을 반환 GROUP_BYmongoid 대신 해시
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
,451,515,=> { "12354asdf"=> [제품 1, 제품 2, 제품 3] "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] }
]
방법은 여기에 기본적으로 [그룹] (HTTP를 구현 .ORG/메뉴얼 MongoDB의 API로부터의/기준/방법/db.collection.group /) 방법. 결과는 의도적으로 배열로 반환됩니다. findOne''같은 심지어 작업 esstially 당신의 코드가하는 것처럼 표준 방법을 포장. –
당신은 어떻게 더 효율적으로할까요? –
형식의 펑키 나는 –