postgresql - Postgres typeorm将单个值与字符串列表jsonb进行比较
问题描述
我一直在尝试将字符串值与动态字符串数组进行 jsonb 比较以使其正常工作,但所有尝试都徒劳无功
PS:别管表名和不同的列,它们仅用于本地测试
我有一个 test-FAQS 表,其中有 "question" "questionNo" "questionVector" 这是 tsvector(questionNo) 和两个 jsonb 列 - "metadata" , "fullDocument"
暂时省略完整的文档详细信息,因此元数据列有很多键值对,只列出我正在尝试使用的键值对,{"docId": , "bu": , "subBu": }。同样,所有这些都是字符串,
这就是我要尝试的 - 使用 ts_query 实现基于文本的搜索,并确保它与用户输入的 bu 和 subBu 名称匹配。现在用户可以输入一个 subBu 数组,这就是我苦苦挣扎的地方。我目前已经实现了这些查询,现在它们是普通查询
这有效 - 获取具有给定上下文的意图文档,并仅与客户发送的 BuName 匹配
SELECT "A"."question", "A"."questionNo" FROM "test-FAQS" as "A"
WHERE "A"."fullDocument"::jsonb @> '{"businessUnit": "WI-BusinessUnit"}' AND to_tsquery('jump & fox')
现在,如果我尝试合并另一个子句来限制基于 subBusinessUNIts 的搜索 - subBu 名称作为数组从用户获得,则查询不起作用。
SELECT "A"."question", "A"."questionNo", "A"."fullDocument"::jsonb #> '{subBusinessUnit}' FROM "test-FAQS" as "A"
WHERE "A"."fullDocument"::jsonb @> '{"businessUnit": "WI-BusinessUnit"}' AND to_tsquery('jump & fox') AND "A"."fullDocument"::jsonb @@ '$.subBusinessUnit[*] IN ARRAY["subBu1", "subBu2"]'
我在这里查看了 jsonb 运算符的 PostgresDocs,但无法找出用于将特定 json 键的值与 array 进行比较的那个。这里有什么建议?
解决方案
推荐阅读
- android - 使用 Kotlin 中的改造 2 将双精度、字符串和图像作为多部分表单数据发布
- node.js - 如何使用 node api 将图像存储在共享主机提供商上
- java - javax.net.ssl.SSLException:收到致命警报:protocol_version,如何调试?
- javascript - 使用 NextJS 将变量从 API 请求传递到响应
- javascript - 如何从 URL 创建音频资源?(尝试为 discord.js v13 编写一个机器人)
- validation - 如何检查表单在 JSF/Primefaces 中是否有效
- laravel - 基于另一个枢轴关系查找所有特定关系
- html - 最初为 src 上具有固定宽度、初始高度和自动高度的空 img
- javascript - 如何使用 jquery 使用箭头键将相邻 ul 中的第一项聚焦
- jquery - Firefox 中的 ContentEditable 文本框拖放链接