如何仅使用分区键更新cassandra中的行?
我的桌子看起来像这样如何仅使用分区键更新cassandra中的行?,cassandra,nosql,cql,cql3,Cassandra,Nosql,Cql,Cql3,我的桌子看起来像这样 create table Notes( user_id varchar, real_time timestamp, insertion_time timeuuid, read boolean PRIMARY KEY (user_id,real_time,insertion_time) ); create index read_index on Notes (read); 我希望使用用户id='xxx'更新所有行,而不必指定所有聚类索引 U
create table Notes(
user_id varchar,
real_time timestamp,
insertion_time timeuuid,
read boolean PRIMARY KEY (user_id,real_time,insertion_time)
);
create index read_index on Notes (read);
我希望使用用户id='xxx'更新所有行,而不必指定所有聚类索引
UPDATE Notes SET read = true where user_id = 'xxx'; // Says Error
错误:message=“缺少实时必需的主键部分”
我尝试过创建辅助索引,但不允许在主键上创建
我怎样才能解决这个问题
我选择user_id作为主键,因为我希望能够从注释中选择*,其中user_id='xxx'应该是可能的。虽然使用RDBMS和SQL可以做到这一点,但在Cassandra中使用cql是不可能的。从命令的DataStax文档中: 每个update语句都需要使用WHERE子句指定一组精确的主键。您需要指定具有复合列和群集列的表中的所有键
您可能需要用Python(或其他驱动程序之一)快速编写一些东西来执行这种类型的更新。尽管上述答案是正确的,但我认为值得一提的是,您可以在主键的最后一列使用
in
子句(即作者问题中的插入时间
)。根据您的用例,这有助于减少所需的CQL语句量。