Elixir 不使用片段查询嵌入式模式

Elixir 不使用片段查询嵌入式模式,elixir,ecto,Elixir,Ecto,假设我们有模式: schema "organization" do embeds_one :details, Detail timestamps() end # Detail schema embedded schema do field :name, :string field :description, :string end details字段作为jsonb字段存储在数据库中 现在,假设我想通过名称查询一个组织,目前我唯一能做的就是使用片段: Or

假设我们有模式:

schema "organization" do
  embeds_one :details, Detail

  timestamps()
end

# Detail schema
embedded schema do
  field :name, :string
  field :description, :string
end
details
字段作为jsonb字段存储在数据库中

现在,假设我想通过名称查询一个组织,目前我唯一能做的就是使用片段:

Organization
|> where([org], fragment("details->>'name' = ?", ^organization_name))
|> Repo.one()

有没有什么内置方法可以不使用片段就完成此操作?

非常确定您需要使用
fragment/1
。您需要在这里使用片段的原因是,这是postgres特定的语法,并且尽最大努力保持DB不可知。像mysql这样的数据库也有json字段类型,那么我猜也有一些没有?mysql中支持json字段的是,MSSQL也有自己的注意事项。。。我不是DB专业人士,但我猜跨RDBMS对JSON查询的支持可能会出现在中,但这需要一些时间。非常确定您需要使用
fragment/1
。您需要在这里使用片段的原因是,这是postgres特定的语法,并且尽最大努力保持DB不可知。像mysql这样的数据库也有json字段类型,那么我猜也有一些没有?mysql中支持json字段的是,MSSQL也有自己的注意事项。。。我不是DB专业人士,但我猜跨RDBMS支持JSON查询可能会出现在中,但这需要一些时间。