【问题标题】:Postgres search in JSONJSON 中的 Postgres 搜索
【发布时间】:2020-05-24 20:53:42
【问题描述】:

我的probe_table 看起来像这样:

标识 |我的元数据

probe 列是 JSON,具有以下内容:

{
  "myProbe": {
    "someField": "20",
    "ip": "1.1.1.1",
  }
} 

我正在尝试在所有 probe 列中搜索特定 IP。

我试过了:

SELECT * 
      FROM probe_table
      WHERE probe @> '{"myProbe":{"ip": "1.1.1.1"}}';

错误:操作符不存在:文本@>未知

还有这个:

SELECT * FROM probe_table WHERE probe->myProbe->>ip = '1.1.1.1'

错误:“myProbe”列不存在

知道我错过了什么吗?

【问题讨论】:

  • @a_horse_with_no_name 修正了问题,错误是一样的。

标签: postgresql postgresql-9.5


【解决方案1】:

->->> 运算符的参数需要使用单引号。并且消息“operator does not exist: text @> unknown”表示您的列的类型是 text 而不是 json(或应该是 jsonb),所以您需要强制转换它:

SELECT * 
FROM probe_table 
WHERE probe::jsonb -> 'myProbe' ->> 'ip' = '1.1.1.1'

或者

SELECT * 
FROM probe_table
WHERE probe::jsonb @> '{"myProbe":{"ip": "1.1.1.1"}}';

【讨论】:

    猜你喜欢
    • 2021-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-09
    相关资源
    最近更新 更多