Cassandra支持通过语法
更新Collection中的特定值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';
http://www.datastax.com/documentation/cql/3.0/cql/cql_using/use_map_t.html
没有看到使用QueryBuilder更新Map中特定行的任何示例。怎么做?
答案 0 :(得分:3)
我认为你有几种选择。
1 /根据CQL构建您自己的查询。
示例:假设您有一个名为Interactions的表,并且在您的架构中有一个名为'attributes'的列。
String update ="UPDATE demo.Interactions SET attributes=attributes + {'i':'j'} where id='ff';
SimpleStatement statement = new SimpleStatement(update);
session.execute(statement);
2 /使用Java API。
Java API确实没有记录。 我们来举个例子
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(...)
SET:
QueryBuilder.addAll(...)
QueryBuilder.removeAll(...)
MAP:
QueryBuilder.putAll(...)
QueryBuilder.put(...)
该清单并不详尽。 如果找不到您要查找的内容,请查看QueryBuilder类。
与Cassandra一起致以最好的问候和好运。