如何在ecto中搜索数组长度

How to search for an array length in ecto

假设我有一个模式

defmodule User do
  use MyApp.Web, :model

  schema "users" do
    field :loved_numbers, {:array, :integer} 
  end
end

我如何使用 Ecto.Query 搜索正好有 2 loved_numbers 的所有用户?

此查询在 PostgreSQL 和 MySQL 中都有效吗?

在 PostgreSQL 中,您可以使用 array_length 使用片段的函数:

from(u in User, where: fragment("array_length(?, 1)", u.loved_numbers) == 2)

1是要统计的维度,一维数组应该是1

据我所知,MySQL does not support arrays