[英]SQLAlchemy: retrieve records by exact matching on keys in nested JSONB field
假設我有一個名為Table
,其中包含一個 JSONB 字段data
。 其中一條記錄(記錄 1)存儲了以下 JSON 對象:
{
"A": {},
"B": {}
}
另一條記錄(記錄 2)存儲了以下 JSONB 對象:
{
"A": {},
"B": {},
"C": {}
}
我正在努力通過對data
字段中的鍵進行精確過濾來定義一種查找記錄的方法。 例如,我想檢索data
字段中只有鍵"A"和"B" 的記錄,即記錄 1。
我已經嘗試了 SQLAlchemy 的JSONB
類型比較器方法,例如contains()方法,但是在以下 Python 查詢的情況下,這將返回兩個記錄:
Session().query(Table).filter(Table.data.contains({"A": {}, "B": {}})).all()
是否可以使用可用的 SQLAlchemy 過濾器對(一系列)鍵進行精確過濾? 歡迎任何想法。 非常感謝!
?
如果字符串作為頂級鍵存在,則運算符返回 true。
-
運算符從左操作數中刪除鍵/值對。
您可以像這樣組合這些:
select data from Table
where data ? 'A' and data ? 'B' and (data - 'A') - 'B' = '{}';
在英語中,獲取記錄
data ? 'A' and data ? 'B'
data ? 'A' and data ? 'B'
(data - 'A') - 'B' = '{}'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.