如何使用 Postgres 使用 Ecto 存储数组

How to store array with Ecto using Postgres

我想使用 Postgres 使用 Ecto 存储一个浮点值数组。 我将 Ecto 与 Phoenix Framework 和 Elixir 一起使用。

我将如何为此定义我的模型和迁移?

我没有尝试太多,除了在网上搜索,没有找到任何有用的东西:-(

我确实尝试用这样的模式定义模型:

  schema "my_model" do
    field :my_array, :array

    timestamps
  end

报错"invalid or unknown type :array for field :my_array"

我在 Ecto.Schema 的原始类型列表中找到了答案:

Ecto.Schema

答案是这样定义类型:

  schema "my_model" do
    field :my_array, {:array, :float}

    timestamps
  end

正如 Josh 所写,使用 Ecto.Schema

中的数组类型

模型中:

schema "my_model" do
  field :my_array, {:array, inner_type}
end

@neildaemond 迁移:

alter table(:my_models) do
  add :my_array, {:array, inner_type}
end

inner_type 替换为一种有效类型,例如 :string.

你也可以用 map 类型做同样的事情:

schema "my_model" do
  field :my_map, {:map, inner_type}
end