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



根据dataStax collections doc,始终读取一个集合。在引擎盖C*下,将收集作为动态列的列表。例如

books map<text, int>

将是

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

为什么不可能从地图中选择一个特定键?

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

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

cassandra整体读取每一列。
Cassandra仅允许仅在主键上的子句中,如果您需要通过普通列过滤,则必须在其上创建索引。

对于您的情况,您需要将地图分开并分为两个字段,然后将键作为主键

例如:

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

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

SELECT value FROM books WHERE key = ?

最新更新