【发布时间】:2021-12-17 06:42:00
【问题描述】:
我正在使用 knex 并尝试使用 JSON_ARRAYAGG 和 JSON_OBJECT 查询对象数组。不幸的是,从JSON_ARRAYAGG 返回的整个数组都用单引号括起来,我似乎无法摆脱它们。
我的查询与此非常相似:
let data = await knex('table1')
.join('table2')
.where({ 'table1.id': id })
.select(
'a',
'b',
knex.raw(
'JSON_ARRAYAGG(json_object("c", c, "d", d)) ->> $.itemArr AS itemArr',
),
)
.groupBy('id');
我尝试过以下操作:
-
->>运算符, -
->+JSON_UNQUOTE knex.raw('CAST(JSON_ARRAYAGG(json_object('c', c, 'd', d)) AS JSON ) AS itemArr')knex.raw('CAST(JSON_ARRAYAGG(json_object('c', c, 'd', d)) AS itemArr) AS JSON ')knex.raw('JSON_UNQUOTE(JSON_EXTRACT(JSON_ARRAYAGG(json_object('c', c, 'd', d))), $.specialties) AS JSON ')
我对 mySQL 很陌生,所以我不知道这是否正确,但根据我在 SO 上找到的其他帖子,这些是建议的解决方案。任何帮助将不胜感激
注意:-> 和 ->> 运算符给了我一个解析错误。
编辑:当我使用 $.itemArr 作为路径时,我也得到一个未知的列字段错误。
【问题讨论】:
-
向我们展示一些示例数据和表格、您当前的查询输出和您的预期输出。
标签: mysql knex.js mysql-json