【问题标题】:typeorm add index on jsonb column propertytypeorm 在 jsonb 列属性上添加索引
【发布时间】:2021-02-22 01:35:58
【问题描述】:

我有一个表,其中有一个名为asset 的jsonb 列。此列中的记录有一个名为value 的字段。我正在寻找创建asset.value 索引的选项,但找不到它。有人可以帮我吗?我正在使用typeorm。

谢谢

【问题讨论】:

    标签: typescript postgresql typeorm


    【解决方案1】:

    我没有执行您所要求的操作的经验,但我确实找到了关于 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`);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-06
      • 2016-11-08
      • 1970-01-01
      • 2020-04-13
      • 1970-01-01
      • 1970-01-01
      • 2020-12-08
      • 1970-01-01
      相关资源
      最近更新 更多