我正在为 cassandra
中的一列使用 map 数据类型,它存储类似
{
'email':'example@example.com',
'Id':2
}
如何搜索 email='example@example.com' OR Id = 2
最佳答案
我认为这不可能以直接的方式实现。对于初学者来说,CQL 中没有 OR
运算符。您必须通过合并两个查询的结果来执行 OR 客户端。
其次,要进行这样的查询,您需要二级索引。但是二级索引不允许您(目前)同时索引映射的键和值。来自CQL 3.1文档:
Indexes on the keys and values of a map cannot co-exist.
据我所知,您可以获得的最接近的是一个查询
the_map CONTAINS ('example@example.com')
还有一个用
the_map CONTAINS ('2')
只要保证 email
和 ID
的值不能重叠,两个查询的合并结果应该会给你想要的结果。但无法确保“2”实际上是键 ID
的值或“example@example.com”是键 email
的值。
关于php - 如何在 cassandra 中搜索 map 数据类型列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35377591/