PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Kiểu dữ liệu Postgres JSON Truy vấn đường ray

Đối với bất kỳ ai tình cờ gặp phải điều này. Tôi đã đưa ra một danh sách các truy vấn sử dụng kiểu dữ liệu JSON của ActiveRecord và Postgres. Vui lòng chỉnh sửa điều này để làm cho nó rõ ràng hơn.

Tài liệu về các toán tử JSON được sử dụng bên dưới:https://www.postgresql.org/docs/current/functions-json.html.

# Sort based on the Hstore data:
Post.order("data->'hello' DESC")
=> #<ActiveRecord::Relation [
    #<Post id: 4, data: {"hi"=>"23", "hello"=>"22"}>, 
    #<Post id: 3, data: {"hi"=>"13", "hello"=>"21"}>, 
    #<Post id: 2, data: {"hi"=>"3", "hello"=>"2"}>, 
    #<Post id: 1, data: {"hi"=>"2", "hello"=>"1"}>]> 

# Where inside a JSON object:
Record.where("data ->> 'likelihood' = '0.89'")

# Example json object:
r.column_data
=> {"data1"=>[1, 2, 3], 
    "data2"=>"data2-3", 
    "array"=>[{"hello"=>1}, {"hi"=>2}], 
    "nest"=>{"nest1"=>"yes"}} 

# Nested search:
Record.where("column_data -> 'nest' ->> 'nest1' = 'yes' ")

# Search within array:
Record.where("column_data #>> '{data1,1}' = '2' ")

# Search within a value that's an array:
Record.where("column_data #> '{array,0}' ->> 'hello' = '1' ")
# this only find for one element of the array. 

# All elements:
Record.where("column_data ->> 'array' LIKE '%hello%' ") # bad
Record.where("column_data ->> 'array' LIKE ?", "%hello%") # good


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ruby 'pg' gem liên kết đến bản sao sai của libpq.5.dylib (trên OSX)

  2. Cách tính tổng nhiều cột trong PostgreSQL

  3. Cài đặt đối chiếu utf8 trong PostgreSQL

  4. Cách thay đổi ngôn ngữ khi định dạng số trong PostgreSQL

  5. Tối ưu hóa truy vấn GROUP BY để truy xuất hàng mới nhất cho mỗi người dùng