如何使用活动记录在多个级别中搜索json类型的postgres

我有下面的json

:response_body => { "status" => "ok", "um" => { "a" => "a", "b" => { "c" => "ok" } } 

实现我的搜索:

 LogService.where(response_body: {"status" => "ok"}) 

如果您使用Postgres作为数据库并且列实际上是json类型,您可以在Rails中使用如下搜索:

 LogService.where("response_body#>>'{status}' = 'ok'") 

这个#>>将遍历json路径并进行搜索。 如果只使用#>(只有一个>),它将返回剩余的json。

另一个例子,如果你想获得“c”=>“ok”

 LogService.where("response_body#>>'{um, b, c}' = 'ok'") 

我认为就是这样。