【发布时间】:2021-02-22 01:35:58
【问题描述】:
我有一个表,其中有一个名为asset 的jsonb 列。此列中的记录有一个名为value 的字段。我正在寻找创建asset.value 索引的选项,但找不到它。有人可以帮我吗?我正在使用typeorm。
谢谢
【问题讨论】:
标签: typescript postgresql typeorm
我有一个表,其中有一个名为asset 的jsonb 列。此列中的记录有一个名为value 的字段。我正在寻找创建asset.value 索引的选项,但找不到它。有人可以帮我吗?我正在使用typeorm。
谢谢
【问题讨论】:
标签: typescript postgresql typeorm
我没有执行您所要求的操作的经验,但我确实找到了关于 GIN 索引的 this article。所以如果你有这张桌子
CREATE TABLE test(id int, data JSONB, PRIMARY KEY (id));
你可以在上面创建一个 GIN 索引:
CREATE INDEX datagin ON books USING gin (data);
目前看来 TypeORM 不支持这种类型的专用索引。见this github issue。但是您可以手动将CREATE INDEX 和DROP INDEX 添加到TypeORM 迁移up() 和down() 函数中。
然后您还需要运行自定义 SQL 以使用带有 路径运算符 @>、 的索引:
select * from books where data @> '{"braille":true}'::jsonb;
你可以做什么with the EntityManager API:
const rawData = await manager.query(`select * from books where data @> '{"braille":true}'::jsonb`);
【讨论】: