繁体   English   中英

Rails / Postgres嵌套JSON查询

[英]Rails/Postgres nested JSON query

我的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.

如何在价值范围内进入学校属性?

我从ActiveRecord和JSON的文档中了解了这个想法

经过多次搜索,我发现了这篇文章

#>>运算符允许您挖掘JSON内部。 我的查询可以像这样修复。

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

理论上,您可以通过将每个图层添加到谓词块{value, school, next_level, and_so_on}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM