Suppose I have a JSONB column called value
in a table t
, and inside of these blobs of JSON is a tags
field which is a list of strings.
I'd like to make a query for any of these JSON blobs tagged "foo"
or "bar"
.
So suppose the table data looks like this:
value
---------------------
{"tags": ["other"]}
{"tags": ["foo", "quux"]}
{"tags": ["baz", "bar"]}
{"tags": ["bar", "foo"]}
{"tags": []}
I want to write some sort of query like this:
select value from t where value->'tags' NONEMPTY_INTERSECTION '["foo", "bar"]'
Such that the result will be:
value
-----------------------
{"tags": ["foo", "quux"]}
{"tags": ["baz", "bar"]}
{"tags": ["bar", "foo"]}
Is there an actual query that will accomplish this, and is there any way that it could possibly be fast?
The operator I was looking for is
?|
, which can be used like so:Tested as follows: