在 Postgres JSONB 列中按编号排序

Fel*_*ger 1 postgresql ruby-on-rails jsonb ruby-on-rails-5

position在 JSONB 列中定义了一个键。

这些值被视为文本,因此以下查询

MyModel.order("data ->> 'position' ASC").each {|x| puts x.position}
Run Code Online (Sandbox Code Playgroud)

返回:

0
1
10
2
3
Run Code Online (Sandbox Code Playgroud)

我如何将其position视为整数并根据它对我的模型进行排序?

Dav*_*dge 5

纯粹是猜测,但也许:

MyModel.order("(data ->> 'position')::Integer ASC").each {|x| puts x.position}
Run Code Online (Sandbox Code Playgroud)

  • 猜测还不错:) (2认同)