我正在使用CQL 3.1中的用户自定义类型(以下是cqlsh信息):
[cqlsh 5.0.1 | Cassandra 2.1.2 | CQL spec 3.2.0 | Native protocol v3]
我已经创建了以下的用户定义类型(为了演示目的而简化):
create type fullname ( firstname text, lastname text );
然后我创建了一个包括一组详尽类型的表:
create table people ( id UUID primary key, names set < frozen <fullname>> );
我可以使用以下代码向表格中插入行:
insert into people (id, names) values (
now(),
{{firstname: 'Jim', lastname: 'Jones'}}
);
结果看起来很好:
select * from people;
id | names
--------------------------------------+-----------------------------------------
69ba9d60-a06b-11e4-9923-0fa29ba414fb | {{firstname: 'Jim', lastname: 'Jones'}}
我的问题是:如何获取所有名字条目的名字?如果我不使用 set,而只是使用 fullname,则可以使用点标记法:
select name.firstname from people;
但是显然这并不可行,因为我正在使用一个集合。在正常情况下(没有自定义数据类型),集合永远不需要使用点表示法,因为所有条目都是简单类型(文本、UUID等)。我尝试使用其他编程语言中的所有通常怀疑者...
select names.firstname...
select names[].firstname...
select names['firstname']...
关于UDT,网络上唯一的信息来自DataStax网站,然而该网站没有讲解此用例。
是否有人之前尝试过这个?还是我所做的是不被允许的?
谢谢,
约翰