Zer*_*001 3 cql cassandra cql3
我正在努力与cassandra和CQL.我正在定义这个表模式,
CREATE TABLE useradvisits (
userid text,
adid int,
type int,
timestamp timestamp,
PRIMARY KEY (userid, adid, type)
);
Run Code Online (Sandbox Code Playgroud)
我想这样查询,
SELECT * from useradvisits where userid = 'user-1' and adId in (100, 1001);
Run Code Online (Sandbox Code Playgroud)
但是它说,Bad Request:PRIMARY KEY部分adid不能被IN关系限制
我正在使用最新的datstax企业版3.1.
cqlsh控制台说,
[cqlsh 3.1.2 | Cassandra 1.2.6.1 | CQL spec 3.0.0 | Thrift protocol 19.36.0]
Run Code Online (Sandbox Code Playgroud)
因为我需要(adId + type)是唯一的,即(100:1),(100:2)都存在于用户.任何人都可以帮我解决方法吗?
您从adid和type创建了一个复合列键.您可以添加到行键以创建合成.只需创建一个模型,PRIMARY KEY ((userid, adid), type)您的查询就可以了.在这种方法的下方:您将始终必须指定adid.
您也可以执行相反的操作,并将类型添加到行键.如果你事先知道"类型"的范围,这可能会更好.
| 归档时间: |
|
| 查看次数: |
1060 次 |
| 最近记录: |