为什么CQL完整地读取集合?

时间:2017-02-22 19:40:02

标签: cassandra cql3

根据DataStax collections doc,集合总是作为一个整体来阅读。在引擎盖下,C *将集合存储为动态列的列表。 例如

books map<text, int>

将是商店

{name=books:book_name_1, value=2001},
{name=books:book_name_2, value=2002}

为什么不能从地图中选择特定的键?

2 个答案:

答案 0 :(得分:0)

那是什么JSON结构? (这不是有效的JSON。)这不是地图将如何存储在Cassandra内的列中。

无论如何,您可能正在寻找以下内容:http://docs.datastax.com/en/cql/3.1/cql/ddl/ddl_query_collection_c.html

答案 1 :(得分:0)

Cassandra整体阅读每一栏 Cassandra只允许在主键上使用where子句,如果需要通过普通列进行过滤,则必须在其上创建索引。

对于您的情况,您需要将地图拆分为两个字段,并将密钥设为主键

例如:

CREATE TABLE books(
    key text,
    value int,
    primary key(key)
);

现在您可以按键查询以获取值;

SELECT value FROM books WHERE key = ?