gpt4 book ai didi

ruby-on-rails - Rails/Postgres 嵌套 JSON 查询

转载 作者:行者123 更新时间:2023-11-29 11:35:59 26 4
gpt4 key购买 nike

我的 events 表中有一个名为 payload 的 JSON 列。我可以创建一个这样的事件:

Event.create!(application_id: 1, stage: 'INITIATION', payload: { key: 'OUTCOME', value: {school_id: 2, prefered_language: 'GBP'}})

像这样的简单查询

Event.where("payload->>'key' = ?", "OUTCOME")

可以正常工作,但是我怎样才能使用嵌套在 value 部分中的 JSON 添加额外的过滤器

 Event.where("payload->>'key' = ? AND payload ->>'value'->>'school' = ?", "OUTCOME", 2) 
^^^^^^^^^^^^^^^^^^^^

我试过了,但我得到了:

PG::UndefinedFunction: ERROR:  operator does not exist: text ->> unknown
LINE 1: ...ad ->>'key' = 'INPUTPARAMS' AND payload ->>'value'->>'school... ^
HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.

如何进入值内的学校属性?

我从这个 documentation 中得到了这个想法在 ActiveRecord 和 JSON 上

最佳答案

经过大量搜索,我发现了这个 article .

#>> 运算符允许您深入 JSON。我的查询可以这样解决。

Event.where("payload->>'key'= ? AND payload#>>'{value, school_id}' = ?", 'OUTCOME', shcool_id)

理论上,您可以通过将每一层添加到谓词 block {value, school, next_level, and_so_on} 来进一步深入

关于ruby-on-rails - Rails/Postgres 嵌套 JSON 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35868157/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com