I'm experimenting with postgres jsonb
column types, and so far so good.
One common query I'm using is like this:
select count(*) from jsonbtest WHERE attributes @> '{"City":"Mesa"}';
How do I reverse that? Is there a different operator or is it simply used as
select count(*) from jsonbtest WHERE NOT attributes @> '{"City":"Mesa"}';
Two way, you can test any json(b) value
->>
operator extract value as text. But this operation slow, if you will use the value only test@>
operator test any json(b) contain any json(b). This is a quick but you are not tested NOT option. Simply and quick way:
NOT (attribute @> '{"City":"Mesa"}'::jsonb)
I've change attribute->>'City' <> 'Mesa'
to NOT (attribute @> '{"City":"Mesa"}'::jsonb)
and my ~2.000.000 rows query result time changed 45secs to 25secs.