我有这个问题:
query = from(p in Tree,
join: kw in assoc(p, :kw),
join: k in Keyo, on: k.id == kw.keyo_id,
where: p.user_id == ^id,
select: %{
tree: p.name,
keyword: k.keyword,
},
)
它返回结果如:
[%{keyword: "jesus", tree: "baila"}, %{keyword: "clinton", tree: "baila"},
%{keyword: "bush", tree: "baila"}, %{keyword: "red", tree: "default"},
%{keyword: "sea", tree: "default"}, %{keyword: "apple", tree: "default"}]
是否可以将具有相同列名的数据库返回结果以某种方式组合在一起?类似于:
%{
baila: [%{keyword: "jesus"}, %{keyword: "clinton"},
%{keyword: "bush"}
default: [%{keyword: "red"},
%{keyword: "sea"}, %{keyword: "apple"}]
}
答案 0 :(得分:1)
使用Elixir标准库非常容易! Enum.group_by/3
可以让您实现目标。使用您的示例,它看起来像这样:
my_data = [%{keyword: "jesus", tree: "baila"},
%{keyword: "clinton", tree: "baila"},
%{keyword: "bush", tree: "baila"},
%{keyword: "red", tree: "default"},
%{keyword: "sea", tree: "default"},
%{keyword: "apple", tree: "default"}]
IO.inspect Enum.group_by(my_data, &(&1.tree))
希望这有帮助!