我在postgresql数据库中的列类型json
中存储了以下JSON数组。
为了将查询写入"查找实例url为/ api / mydef / definitions / 3和rel=parent
"links":[
{
"dsId": 2,
"instance": "/api/mydef/definitions/3",
"rel": "parent"
}
]
在Scala,Slick,Play环境中使用slickpg。尝试编写如下查询
sourceInstance.filter { _.links.+>>("instance") === "/api/mydef/definitions/3" }.filter { _.links.+>>("rel") === "parent" }
但是它给了我postgresql错误:org.postgresql.util.PSQLException: ERROR: cannot extract field from a non-object
如何在数组和表中使用slickpg
扩展名/运算符进行查询,以便能够获得符合此类查询条件的所有记录?
答案 0 :(得分:1)
使用光滑的postgresql 9.3,我正在使用
val jsonSQL=SimpleFunction.binary[Option[String],String,Option[String]]("json_extract_path_text")
这样这个jsonSQL函数可以用来提取json树中的文本。例如,复杂的光滑连接:
val destTable = for {
(b,d) <- (__Ttable filter (_.xx === "foo"))
join ( __Ltable filter (_.yy === "bar"))
on ((a,b) => jsonSQL(a.qualifier,"JSONPATH") === b.name)
} yield (b.Id,b.d,d.id)