如何在cassandra中搜索地图数据类型列?

时间:2016-02-13 08:06:37

标签: php cassandra

我在cassandra中使用map数据类型来存储像

这样的值
{
    'email':'example@example.com',
    'Id':2
}

如何搜索email='example@example.com' OR Id = 2

1 个答案:

答案 0 :(得分:0)

我认为这不可能直接进行。对于初学者来说,CQL中没有OR运算符。您必须通过合并两个查询的结果来执行OR客户端。

其次,要进行此类查询,您需要一个二级索引。但是二级索引不允许您(还)索引关键字和地图的值。来自CQL 3.1文档:

  

地图的键和值的索引不能共存。

因此,据我所见,您可以获得的最接近的查询是

the_map CONTAINS ('example@example.com')

和另一个

the_map CONTAINS ('2')

只要保证emailID的值不能重叠,两个查询的合并结果就可以为您提供所需的结果。但是没有办法确保'2'实际上是键ID或'example@example.com'的值是键email的值。