Cassandra支持通过语法更新集合中的特定值
ALTER TABLE users ADD todo map<timestamp, text>
UPDATE users SET todo['2012-10-2 12:00'] = 'throw my precious into mount doom'
WHERE user_id = 'frodo';t.html
没有看到使用QueryBuilder更新Map中特定行的任何示例。怎么做呢?
发布于 2015-01-27 17:36:46
我想你有几个选择。
1/基于CQL .构建您自己的查询
示例:假设您有一个名为Interaction的表,在您的模式中有一个类型为“attributes”的列。
String update ="UPDATE demo.Interactions SET attributes=attributes + {'i':'j'} where id='ff';
SimpleStatement statement = new SimpleStatement(update);
session.execute(statement);2/使用Java .
Java实际上并没有被记录下来。让我们举个例子
a-使用queryBuilder创建更新对象。
Update update = QueryBuilder.update(keyspace, tableName); b-然后填充'put‘或'putAll’函数。put/putAll将添加/更新内容
update.with(QueryBuilder.putAll(key, map));若要删除键,请将键的内容设置为null,如下所示:
for (Object item : map.keySet()) {
update.with(
QueryBuilder.put(columName, item, null)
);
}然后执行查询。
下列方法可用于不同类型:
清单:
QueryBuilder.appendAll(...)
QueryBuilder.discardAll(...)集合:
QueryBuilder.addAll(...)
QueryBuilder.removeAll(...)地图:
QueryBuilder.putAll(...)
QueryBuilder.put(...)这份清单并不令人筋疲力尽。如果您没有找到您要寻找的内容,请在QueryBuilder类中查看。
向卡桑德拉问好,祝你好运。
https://stackoverflow.com/questions/25715275
复制相似问题