2017-02-22 7 views
0

DataStax collections docによると、コレクションは常に全体として読み取られます。フードの下でC *は、動的列のリストと同様にコレクションを格納します。なぜCQLはその中のコレクションを読み込みますか?

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

として例えば

books map<text, int> 

なります店はどのようにマップから特定のキーを選択することはできません来ますか?

+0

[地図から特定の値を選択]の可能複製(http://stackoverflow.com/questions/16024839/select-specific-value-from-map)それはその後、格納されますどのように –

答えて

0

JSONの構造は何ですか? (これは有効なJSONではありません)。それはMapがCassandraの列に格納される方法ではありません。

とにかく、あなたは以下を探している可能性があります:http://docs.datastax.com/en/cql/3.1/cql/ddl/ddl_query_collection_c.html

+0

?私が理解しているのは、カッサンドラにはダイナミックな列としてキーが格納されています。キーはマップ名とキーの組み合わせで、値はマップ値です – EugeneMi

0

カサンドラは、全体として、すべてのコラムを読んで。
カサンドラでは、主キーのみでwhere句のみを使用できます。通常の列をフィルタリングする必要がある場合は、索引を作成する必要があります。あなたがマップを分割し、2つのフィールドにし、例えば、主キー

としてキーを作成する必要があり、あなたのケースでは

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

今、あなたは値を取得するためにキーで問い合わせることができます。

SELECT value FROM books WHERE key = ? 
+0

私は列でフィルタリングするつもりはありません。マップは動的な列として格納されているので、マップ全体の代わりにその列を読むことができると期待します – EugeneMi

+0

@EugeneMiあなたはその列を読むことができません、全体を読む必要があります –

+0

これをチェックしてくださいhttp ://stackoverflow.com/questions/16024839/select-specific-value-from-map –

関連する問題