cassandra cql:基于用户定义类型中的字段的查询

sqyvllje  于 2021-06-09  发布在  Cassandra
关注(0)|答案(1)|浏览(377)

我创建了一个表,如下所示 CREATE TABLE users (user_id int, user_fname text, user_lname text, PRIMARY KEY (user_id)); 然后在表中添加另一列: CREATE TYPE traits (birth_year int, marital_status text, height float); 将其添加到表中: ALTER TABLE users ADD user_traits FROZEN<traits>; 我想运行一个查询,返回所有单身用户的姓名,但是我不确定如何完成这一点,因为我正在过滤用户定义类型中的字段。
这就是我所拥有的: SELECT user_fname, user_lname FROM users WHERE user_traits.marital_status = 'Single' ALLOW FILTERING; 但是,当我运行时,此代码返回一个错误。这个查询可以在cassandra cql中执行吗?

r3i60tvu

r3i60tvu1#

按udt字段查询仅在dse搜索中受支持,在二级索引的新实现中可能也会受支持,但这是在将来。
你犯了一个大错误,试图使用Cassandra作为“传统”的数据库。这里缺少了主要部分—表结构是基于查询选择的,而不是基于表结构的查询。因此,如果您需要按军事状态搜索,它应该是主键(尽管这将是一个单独的问题,因为它是低基数字段)。
正如我在前面的回答中所提到的,如果你这样使用cassandra,你需要重新考虑它的用法,或者完全改变解决问题的方法。我建议您参加datastax academy的ds220课程,学习cassandra的数据建模-这将为您节省大量时间。此外,考虑获得第三版的“Cassandra。从datasax网站免费提供的权威指南“书。

相关问题