如何使用DataStax QueryBuilder向集合中添加元素?

时间:2015-05-24 04:47:56

标签: scala cql datastax cql3 datastax-java-driver

我有一个列类型为

的表
text, bigint, set<text> 

我正在尝试更新单行并使用QueryBuilder向该集添加元素。

覆盖现有集合的代码如下所示(注意这是scala):

val query = QueryBuilder.update("twitter", "tweets")
  .`with`(QueryBuilder.set("sinceid", update.sinceID))
  .and(QueryBuilder.set("tweets", setAsJavaSet(update.tweets)))
  .where(QueryBuilder.eq("handle", update.handle))

我能够找到实际的CQL,用于将一个元素添加到一个集合中:

UPDATE users
SET emails = emails + {'fb@friendsofmordor.org'} WHERE user_id = 'frodo';

但是找不到使用QueryBuilder的例子。

基于CQL我也尝试过:

  .and(QueryBuilder.set("tweets", "tweets"+{setAsJavaSet(update.tweets)}))

但它没有用。提前致谢

2 个答案:

答案 0 :(得分:5)

使用add(一次添加一个元素)或addall(一次多个元素)方法添加到集合中。

答案 1 :(得分:0)

扩展Ananth's answer

QueryBuilder.add不支持BindMarker。要在添加集合时使用BindMarker,必须仅使用QueryBuilder.addAll。*

*仅需注意,Collections.singleton在这方面可能会派上用场。