根据DataStax collections doc,集合总是作为一个整体来阅读。在引擎盖下,C *将集合存储为动态列的列表。 例如为什么CQL读取整个集合?
books map<text, int>
将店为
{name=books:book_name_1, value=2001},
{name=books:book_name_2, value=2002}
为什么就不能选择从地图的特定按键?
根据DataStax collections doc,集合总是作为一个整体来阅读。在引擎盖下,C *将集合存储为动态列的列表。 例如为什么CQL读取整个集合?
books map<text, int>
将店为
{name=books:book_name_1, value=2001},
{name=books:book_name_2, value=2002}
为什么就不能选择从地图的特定按键?
这是什么JSON结构? (这不是有效的JSON。)这不是一个Map如何存储在Cassandra内的列中。
无论如何,你可能会寻找以下:http://docs.datastax.com/en/cql/3.1/cql/ddl/ddl_query_collection_c.html
会是怎样保存,然后可能的复制?我的理解是,每个映射entery都存储在Cassandra中作为一个动态列,其中的Key是映射名称和键的组合,并且该值是映射值 – EugeneMi
卡桑德拉阅读每列作为一个整体。
卡桑德拉只允许在主键上的where子句,如果你需要通过普通列进行过滤,你必须在其上创建索引。
对于你的情况,你需要分割地图,分为两个领域,使键作为主键
例如:
CREATE TABLE books(
key text,
value int,
primary key(key)
);
现在,您可以通过按键来获得价值查询;
SELECT value FROM books WHERE key = ?
我不希望按列进行过滤。地图是作为一个动态列存储的,所以我期望能够读取该列而不是整个地图 – EugeneMi
@EugeneMi你不能只读该列,你需要阅读整个 –
检查这一个http ://stackoverflow.com/questions/16024839/select-specific-value-from-map –
的[选择从地图特定值(http://stackoverflow.com/questions/16024839/select-specific-value-from-map) –