使用 cql Cassandra 中的映射值进行过滤

Filtering by using map value in cql Cassandra

我正在尝试 select 通过过滤地图列上的值来记录。

name (text) | last (text) | languages(map<text:text>)
john | stith | {12:English, 123:Spanish}
Jane | Doe | {34:Italian, 123:Spanish}

我正在尝试 select 记录只有意大利语作为值。但在文档上只显示了如何通过密钥获取记录。

通过按意大利语过滤,我应该在上面的示例中找到 Jane Doe。我怎样才能完成过滤?

您需要为地图的值创建索引。 假设创建了地图值索引,使用地图中的值过滤数据

SELECT * FROM table WHERE languages CONTAINS 'Italian';

为值创建索引

CREATE INDEX mymapvalues ON tableName(languages);

查看此处了解更多信息 https://docs.datastax.com/en/cql/3.1/cql/ddl/ddlIndexColl.html