如何使用CassandraOperations更新集合

时间:2015-02-06 04:52:18

标签: java cassandra spring-data-cassandra

我正在研究使用spring-data-cassandra的CassandraOperations来更新cassandra表中的集合的示例。 请分享,因为我发现很难做到正确。此外,它无法通过网络获得。

由于

更新

我查看了spring-data-cassandra的代码。目前,他们只提供通过更新操作替换集合的选项。我将寻求扩展它并为集合升级提供API

1 个答案:

答案 0 :(得分:0)

这是使用CQL3的自包含示例。使用java cassandra驱动程序将其移植到spring应该不复杂。

cqlsh> CREATE KEYSPACE test WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 1 };
cqlsh> CREATE COLUMNFAMILY test.example (name text PRIMARY KEY, emails list<text>);
cqlsh> UPDATE test.example SET emails = ['fake@mail.com'] where name='lyuben';
cqlsh> SELECT * FROM test.example;

 name   | emails
--------+-------------------
 lyuben | ['fake@mail.com']

(1 rows)
cqlsh> UPDATE test.example SET emails = ['not@real.net'] + emails where name='lyuben';
cqlsh> SELECT * FROM test.example;                                              
 name   | emails
--------+-----------------------------------
 lyuben | ['not@real.net', 'fake@mail.com']

(1 rows)
cqlsh> UPDATE test.example SET emails = emails + ['maybe@legit.cc'] where name='lyuben';
cqlsh> SELECT * FROM test.example;                                              
 name   | emails
--------+-----------------------------------------------------
 lyuben | ['not@real.net', 'fake@mail.com', 'maybe@legit.cc']

(1 rows)

DOCS here以及other collections上的一些内容。

唯一需要注意的是,无论是在声明的开头还是在结尾处追加新的集合元素都会有所不同:

// post-append
['not@real.net'] + emails
['not@real.net', 'fake@mail.com']
// pre-append
emails = emails + ['maybe@legit.cc']
['not@real.net', 'fake@mail.com', 'maybe@legit.cc']