首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用querybuilder更新Cassandra映射值

使用querybuilder更新Cassandra映射值
EN

Stack Overflow用户
提问于 2014-09-07 22:17:14
回答 1查看 3.3K关注 0票数 0

Cassandra支持通过语法更新集合中的特定值

代码语言:javascript
复制
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中特定行的任何示例。怎么做呢?

EN

回答 1

Stack Overflow用户

发布于 2015-01-27 17:36:46

我想你有几个选择。

1/基于CQL .构建您自己的查询

示例:假设您有一个名为Interaction的表,在您的模式中有一个类型为“attributes”的列。

代码语言:javascript
复制
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创建更新对象。

代码语言:javascript
复制
Update update = QueryBuilder.update(keyspace, tableName); 

b-然后填充'put‘或'putAll’函数。put/putAll将添加/更新内容

代码语言:javascript
复制
  update.with(QueryBuilder.putAll(key, map));

若要删除键,请将键的内容设置为null,如下所示:

代码语言:javascript
复制
for (Object item : map.keySet()) {                    
  update.with(
    QueryBuilder.put(columName, item, null)
  );
}

然后执行查询。

下列方法可用于不同类型:

清单:

代码语言:javascript
复制
QueryBuilder.appendAll(...)
QueryBuilder.discardAll(...)

集合:

代码语言:javascript
复制
QueryBuilder.addAll(...)
QueryBuilder.removeAll(...)

地图:

代码语言:javascript
复制
QueryBuilder.putAll(...)
QueryBuilder.put(...)

这份清单并不令人筋疲力尽。如果您没有找到您要寻找的内容,请在QueryBuilder类中查看。

向卡桑德拉问好,祝你好运。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25715275

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档