我正在尝试使用postgres jsonb列类型,到目前为止到目前为止还不错。
我正在使用的一个常见查询是这样的:

select count(*) from jsonbtest WHERE attributes @> '{"City":"Mesa"}';

我该如何扭转呢?是否有其他运算符或只是用作
select count(*) from jsonbtest WHERE NOT attributes @> '{"City":"Mesa"}';

最佳答案

两种方式,您可以测试任何json(b)值

  • ->>运算符将值提取为文本。但是这个操作很慢,如果只使用值测试
  • @>运算符测试任何json(b)包含任何json(b)。这是一种快速的方法,但是您没有经过NOT选项的测试。

  • 简单快捷的方法:
    NOT (attribute @> '{"City":"Mesa"}'::jsonb)
    

    我已经将attribute->>'City' <> 'Mesa'更改为NOT (attribute @> '{"City":"Mesa"}'::jsonb),我的〜2.000.000行查询结果时间从45sec更改为25sec。

    08-26 11:28