在 JSONB 列上使用 OR 运算符进行查询

Queries with OR operator on JSONB column

我在 users table 上有一个名为 metadata 的 JSONB 列。我想让 metadata->a->b 为 5、6 或 7 的用户。我可以这样做:

SELECT * FROM users 
WHERE metadata @> '{"a": {"b": 5}}' 
   OR metadata @> '{"a": {"b": 6}}' 
   OR metadata @> '{"a": {"b": 7}}'; --etc.

有没有更有效的方法来进行这样的查询?类似于 JSONB 的 IN

... WHERE metadata->'a'->>'b' IN (5, 6, 7)

您可以在 可能 帮助的表达式上创建 B 树索引:

CREATE INDEX ON users ((metadata->'a'->>'b'));