我正在研究使用spring-data-cassandra的CassandraOperations来更新cassandra表中的集合的示例。 请分享,因为我发现很难做到正确。此外,它无法通过网络获得。
由于
更新
我查看了spring-data-cassandra的代码。目前,他们只提供通过更新操作替换集合的选项。我将寻求扩展它并为集合升级提供API
答案 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']