如何使用phantom从cassandra中的ListColumn [String]进行查询

时间:2016-10-10 10:27:10

标签: scala cassandra phantom-dsl

我是cassandra的新手(几天后开始学习我自己的兴趣)并寻求以下问题的帮助。

我有一张Cassandra表" User"和ListColumn"兴趣扩展ListColumn [String]"。 现在,我想要感兴趣的所有用户,说"播放"。

喜欢:从用户中选择interest.contains(" play")! 我通过ListColumn api扫描但无法找到任何。此外,在谷歌搜索,但没有这样有用的帖子。

任何帮助的人请...提前感谢:)

2 个答案:

答案 0 :(得分:1)

因此operators中有containsan example如何使用它。看起来它应该像任何其他运算符一样工作,所以只需要database.userTable.select.where(_.interests contains "playing").fetch() - 当然,这取决于您的约定。

答案 1 :(得分:1)

这可以通过集合列上的辅助索引实现,该索引仅适用于Set列,而不适用于List

底线:

object interests extends SetColumn[String](this) with Index[Set[String]]

然后您可以执行以下操作:

select.where(_.interests contains "test").fetch()

如果允许过滤,也可以使用多个限制。

select.where(_.interests contains "test")
  .and(_.interests contains "test2")
  .allowFiltering()
  .fetch()

只有在记录中找到双方利益时,上述内容才会匹配。