【问题标题】:Cassandra Select Query for List and FrozenCassandra 选择列表和冻结查询
【发布时间】:2018-04-11 02:43:48
【问题描述】:

我有用户定义类型,如

CREATE TYPE point ( pointId int, floor text);

我有这样的表:

CREATE TABLE path (
id timeuuid,
val timeuuid,
PointList list<frozen <point>>,
PRIMARY KEY(id,val)
);

并且有像这样创建索引

create index on path(PointList);

但问题是我无法执行选择查询 where PointList = [floor : "abc"]。

我用谷歌搜索了 2 个小时,但找不到提示。

我正在使用这个查询来执行选择查询

Select * from path where val = sdsdsdsdsds-dsdsdsd-dssds-sdsdsd and PointList contains {floor: 'eemiG8NbzdRCQ'};

我可以在我的 cassandra 表中看到这些数据,但无法使用上述查询获取该数据。

我想要选择查询,我们只能使用floorval。因为我们只有floor and val的数据

我尝试了许多不同的方法,但没有任何效果。

如果能提供任何提示或帮助,我将不胜感激。

谢谢,

【问题讨论】:

    标签: select cassandra cassandra-2.0 cassandra-3.0 spring-data-cassandra


    【解决方案1】:

    冻结点表示点类型被冻结,不能部分提供点值,必须提供点的全部值

    示例查询:

    select * from path where pointlist CONTAINS {pointId : 1, floor : 'abc'};
    

    【讨论】:

    • 哦,意思是我需要定义所有冻结的值。
    • 但是我使用的是带有 cassandra 的 spring boot,而且我只有地板的数据。有什么方法可以使用 floor 获取数据库。 ?
    • @ParthPatel 不要使用 UDT,而是使用单独的字段作为 pointID 和 floor,然后在 floor 上创建索引
    • 感谢您的建议,但这只是一个示例。我有很大的清单。我只有 floor 的数据。你能告诉我,在 Cassandra 中,是否可以使用 where 子句从包含冻结数据类型的列表中获取数据?
    猜你喜欢
    • 2019-03-09
    • 2015-05-22
    • 2016-09-19
    • 2018-05-09
    • 2017-02-04
    • 2016-05-18
    • 1970-01-01
    • 1970-01-01
    • 2019-04-11
    相关资源
    最近更新 更多