postgresql - 查询子字段的对象的 JSONB 数组
问题描述
我遇到了障碍,这个 SO question的第二个答案让我如此接近!
使用 postgresql,我的订单表上有一个 jsonb,places,形状如下:
[
{ "delivery_place" : { "id" : "abc", "name" : "my place" } },
{ "delivery_place" : { "id" : "xyz", "name" : "your place" } }
]
我的目标是使用 ILIKE 查询“名称”详细信息以检索正确的订单。通常我会这样做:
select id from orders, jsonb_array_elements(orders.places) as places where places -> 'delivery_place' ->> 'name' ILIKE '%my%'
我正在使用 Rails 6 并且已经.from()
定义了一个子句,并且不能轻易地将其覆盖为可选的搜索条件。所以我想弄清楚如何只用这个where
子句来做到这一点。
上面的链接帖子似乎通过使用@>
运算符让我完成了 90% 的工作。因此我可以做select id from orders where orders.places @> '["delivery_place" : {"name": "my place"}]'
但是我不知道如何将它与 ILIKE 结合起来。
这甚至可能吗?如果没有,有没有一种我没有注意到的方法?尝试使用 jsonb_array_elements 在 where 直接给了我一个错误,但也许有办法?如果没有,有人知道学习如何with
在 Rails 6 中使用子句的任何资源吗?
解决方案
推荐阅读
- angular - Angular 和 Selenium Webdriver:未知错误:找不到 Chrome 二进制文件
- react-native - 反应原生的常量
- r - 在 R 中按天删除观察
- javascript - HighCharts 中的 PLotLines 重叠 || 反应高图表 || Y轴间隔
- iis - 无法在 IIS 的共享文件夹中写入图像
- python-3.x - 模块“csv”没有属性“writerow”
- c# - HttpClient 和连接:关闭 HttpRequestHeaders
- signal-processing - 对数据中不同周期性的尖峰进行分类
- python - 在递归函数中传递信息
- android - Retrofit2 发布表单数据适用于 android 7,而不是 android 5