Ecto查询 - jsonb列中的order_by字段

时间:2017-11-06 12:53:34

标签: elixir ecto

通过 created_at 列订购Ecto查询时,以下代码可以正常工作。



sort_params = [asc: :created_at]
query = from user in users,
      order_by: ^sort_params,
      limit: ^page_size,
      offset: ^offset




假设我有一个名为info的 jsonb 类型的数据库列,并且JSON对象中的一个字段是" status",有没有办法按该字段排序? Ecto是否具有类似

的有效等价物

sort_params = [asc: :info.status]

1 个答案:

答案 0 :(得分:4)

是,

您可以使用Ecto.Query.API.fragment/1

# you can use fragment/1 only directly in the query

query = from user in users,
  order_by: fragment("info->>'status' ASC"),
  limit: ^page_size,
  offset: ^offset