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 user
của loại json
.
Vì vậy, trông như thế này:
CREATE TABLE users
(
"user" json
)
json
tài sản giữ đơn giản text
. Chỉ cho int
cộ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à int
hoạt động tuyệt vời. Và btw, cảm ơn sự hỗ trợ tuyệt vời của bạn ở đây!
\d tbl
trong 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 ...