背景:我们使用PaperTrail来保存我们不断变化的模型的历史。现在我想查询一个属于某个客户的项目。 PaperTrail可选择存储object_changes
,我需要查询此字段以了解何时使用此ID创建或更改为此ID。查询整数成员的jsonb数组
我的表看起来简化这样的:
item_type | object_changes
----------|----------------------------------------------------------
"Item" | {"customer_id": [null, 5], "other": [null, "change"]}
"Item" | {"customer_id": [4, 5], "other": ["unrelated", "change"]}
"Item" | {"customer_id": [5, 6], "other": ["asht", "asht"]}
如何查询元素从或ID 5(所以上面的所有行)改变了吗?我想:
SELECT * FROM versions WHERE object_changes->'customer_id' ? 5;
这让我:
ERROR: operator does not exist: jsonb ? integer LINE 1: ...T * FROM versions WHERE object_changes->'customer_id' ? 5; ^ HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.
您可能还喜欢'where_object_changes'方法。它应该是为'object_changes'列做一个'where'子句的简便方法。 –
那么你有你的答案吗? –