如果没有“allow filtering”,我如何在cql中使用条件查询?

kwvwclae  于 2021-06-10  发布在  Cassandra
关注(0)|答案(1)|浏览(353)

我是cql新的学习者。我有(餐厅)的table。通过实现'desc restaurants',显示restaurants表中的信息
如何在不使用“允许筛选”的情况下运行以下查询, select name from restaurants where borough = 'brooklyn'; 为了能够在不使用“允许筛选”的情况下运行查询,有哪些必要的步骤?
非常感谢。

cbeh67ev

cbeh67ev1#

对于cassandra(cql),您需要采用基于查询的建模方法。这意味着您需要一个专门设计的表来为查询提供服务 borough .
一个好问题是,为什么(在当前的表设计中)是 id 你唯一的主键?您必须支持以下查询: id ? 如果没有,那你就不需要那张table了。然而,作为 borough 不是唯一的,将其他列聚集到主键定义中是有意义的。
我会这样说:

CREATE TABLE stackoverflow.restaurants_by_borough (
    borough text,
    name text,
    id int,
    buildingnum text,
    cuisinetype text,
    phone text,
    street text,
    zipcode int,
    PRIMARY KEY (borough, name, id)
) WITH CLUSTERING ORDER BY (name ASC, id ASC);

现在该查询将起作用:

select name from restaurants_by_borough
where borough = 'brooklyn';

它将返回每个行政区的数据,按 name . 另外,如果任何两个餐厅有相同的 name (布鲁克林可能不止一家麦当劳) id 添加到键的末尾以确保唯一性。

相关问题