Ich kann für mein ganzes Leben nicht herausfinden, wie ich einen Index für eine Eigenschaft meiner JSON-Spalte erstellen kann, die eine Ganzzahl ist.
Ich habe es so versucht (und auch Dutzende von anderen)
CREATE INDEX user_reputation_idx ON users(("user"->>'reputation')::int)
Es funktioniert gut in einer Abfrage (zB ORDER BY ("user"->>'reputation')::int
)
Was vermisse ich?
AKTUALISIEREN
Ich bekomme einen einfachen Syntaxfehler, aber ich habe wirklich keine Ahnung warum.
ERROR: syntax error at or near "::"
LINE 1: ... user_reputation_idx ON users (("user"->>'reputation')::int)
Die Tabellendefinition ist recht einfach. Es ist nur eine Spalte user
vom Typ json
.
Sieht also so aus:
CREATE TABLE users
(
"user" json
)
json
Eigenschaft, die einfach ist text
. Nur für diese int
Spalte funktioniert es nicht. Die Verwendung in einer Abfrage zum Sortieren int
funktioniert jedoch hervorragend. Und übrigens, danke für deine großartige Unterstützung hier!
\d tbl
in psql) sowie die Abfrage, die Sie ausführen möchten, angeben. Für den Anfang kann diese verwandte Antwort auf SO hilfreich sein. Dieser dient jedoch zum Indizieren eines JSON- Arrays . Ihr Fall scheint einfacher ...