Tôi không thể tìm ra cuộc sống của tôi làm thế nào để tạo một chỉ mục trên một thuộc tính của cột json của tôi là một số nguyên.
Tôi đã thử nó theo cách này (và hàng tá người khác)
CREATE INDEX user_reputation_idx ON users(("user"->>'reputation')::int)
Nó chỉ hoạt động tốt trong một truy vấn (ví dụ ORDER BY ("user"->>'reputation')::int)
Tôi đang thiếu gì?
CẬP NHẬT
Tôi đang gặp một lỗi cú pháp đơn giản, tuy nhiên, tôi thực sự không biết tại sao.
ERROR: syntax error at or near "::"
LINE 1: ... user_reputation_idx ON users (("user"->>'reputation')::int)
Định nghĩa bảng khá đơn giản. Nó chỉ là một cột usercủa loại json.
Vì vậy, trông như thế này:
CREATE TABLE users
(
"user" json
)
jsontài sản giữ đơn giản text. Chỉ cho intcột này nó không hoạt động. Tuy nhiên, sử dụng nó trong một truy vấn để sắp xếp là inthoạt động tuyệt vời. Và btw, cảm ơn sự hỗ trợ tuyệt vời của bạn ở đây!
\d tbltrong psql), cũng như truy vấn bạn đang cố chạy. Đối với người mới bắt đầu, câu trả lời liên quan này về SO có thể giúp ích. Tuy nhiên, cái đó là để lập chỉ mục cho một mảng json . Trường hợp của bạn có vẻ đơn giản hơn ...