简体   繁体   中英

typeorm add index on jsonb column property

I have a table which has a jsonb column named asset . The record in this column has a field called value . I am looking for an option to create index of asset.value but unable to find it. Can someone help me out here? I am using typeorm .

Thanks

I have no experience with doing what you're asking, but I did find this article about GIN Indexes. So if you have this table

CREATE TABLE test(id int, data JSONB, PRIMARY KEY (id));

you can create a GIN index on it:

CREATE INDEX datagin ON books USING gin (data);

It doesn't look like TypeORM will support this type of specialized index at the moment. See this github issue . But you could add the CREATE INDEX and DROP INDEX manually to a TypeORM migration up() and down() function.

Then you'd also need to run custom SQL to make use of the index with the Path Operators @>, <@ :

select * from books where data @> '{"braille":true}'::jsonb;

Which you can do with the EntityManager API :

const rawData = await manager.query(`select * from books where data @> '{"braille":true}'::jsonb`);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM