Есть ли какой-нибудь способ выполнить этот запрос с помощью API YCQL?
YCQL пока не поддерживает ключевое слово CONTAINS
(не стесняйтесь открыть вопрос для этого на YugabyteDB GitHub ). Одним из обходных путей может быть использование MAP<INT, BOOLEAN>
вместо SET<INT>
и оператора []
. Например:
CREATE TABLE test.table_name(
id text,
ckk MAP<int, boolean>,
PRIMARY KEY((id))
);
SELECT * FROM table_name WHERE id = 'foo' AND ckk[4] = true;
И можем ли мы использовать тип SET в SECON DRY INDEX?
Как правило, типы коллекций не могут быть частью первичного ключа, или индексный ключ. Однако «замороженные» коллекции (т. Е. Коллекции, сериализованные в одно внутреннее значение) могут фактически быть частью либо первичного ключа, либо ключа индекса.
Например:
CREATE TABLE table2(
id TEXT,
ckk FROZEN<SET<INT>>,
PRIMARY KEY((id))
) WITH transactions = {'enabled' : true};
CREATE INDEX table2_idx on table2(ckk);