是否可以使用cql连续查询集合?

时间:2014-02-19 07:35:40

标签: cassandra cql

假设你有一部电影和一个类别列表,即

create table movie(
    uuid timeuuid,
    name text,
    category list<text>
    primary key (uuid)
);

insert into movie (uuid,name,category) values(now(), 'my movie', ['romance','comedy']);
insert into movie (uuid,name,category) values(now(), 'other movie', ['action','comedy']);

是否可以有效地执行以下操作:

select * from movie where category='comedy'
select * from movie where category='comedy' and category='action'

此用例是针对MySQL数据库的最常见查询。

1 个答案:

答案 0 :(得分:16)

As of cassandra 2.1,是的,是:

create table cinema.movie(
    id timeuuid,
    name text,
    category list<text>, 
    primary key (id)
);

CREATE index ON cinema.movie (category);
INSERT INTO cinema.movie (id, name, category) VALUES (now(), 'my movie', ['romance','comedy']);
SELECT * FROM cinema.movie WHERE category CONTAINS 'romance';


 uuid                                 | category               | name
--------------------------------------+------------------------+----------
 b9e0d7f0-995f-11e3-b11c-c5d4ddc8930a | ['romance', 'comed`y'] | my movie

(1 rows)

P.S。您的查询中有错误,在类别声明后您在create table语句中缺少,并且您无法在UUID上使用now()函数,而是在寻找TIMEUUID类型。

请记住,在使用这些集合时,性能不会很高(对定量而言如何),为这类事件创建一个单独的表可能会更好。