如果没有 'allow filtering' 我怎么能在 CQL 中进行条件查询?

How can I without the 'allow filtering' to have the conditional query in CQL?

我是CQL的新学习者。 我有(餐厅)table。 通过实施 'desc restaurants',它显示信息 restaurants table information

如何在不使用 'allow filtering' 的情况下 运行 以下查询, select name from restaurants where borough = 'brooklyn';

要在没有 'allow filtering' 的情况下 运行 查询需要哪些必要步骤?

非常感谢。

对于 Cassandra (CQL),您需要采用基于查询的建模方法。这意味着您需要 table 专门设计用于 borough.

的查询

一个很好的开始问题是,为什么(在您当前的 table 设计中)是 id 您唯一的主键?您必须支持 id 的查询吗?如果不是,那么您不需要 table。但是,由于 borough 不是唯一的,因此将其他列聚集到您的主键定义中是有意义的。

我会选择这样的东西:

CREATE TABLE Whosebug.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';

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