簡體   English   中英

Postgres 使用 JSONB 字段搜索鍵和/或值 json object

[英]Postgres searching with JSONB field for keys and/or values of json object

我正在尋找如何正確查詢 Postgres JSONB 字段。 假設我有一個 JSON object 像這樣

{"key1": ["value1", "value2"], "key2": ["value1", "value3"]}

我將它存儲在“數據”字段中,我可以查詢密鑰是否存在。

SELECT data from somethings WHERE data ? "key1"

或者鍵和值。

SELECT data from somethings WHERE data -> "key1" ? "value1"

但我正在努力通過關鍵值的存在進行搜索。 我正在尋找類似的東西。 基本上我想找到一個值的存在,無論是頂級鍵還是每個數組中的值之一。

SELECT data from somethings WHERE data ? ".*" -> "value1"

我想我正在尋找 jsonb_each 一段時間,但我不確定如何利用它。 有什么想法嗎?

您可以使用 JSON 路徑表達式:

select *
from something
where data @? '$.* ? (@[*] == "value1")'

$.*遍歷所有鍵,然后@[*]遍歷每個鍵的所有數組元素。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM