首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cassandra,查询主键,跳过集群列(timeuuid)

Cassandra,查询主键,跳过集群列(timeuuid)
EN

Stack Overflow用户
提问于 2018-01-02 12:03:53
回答 1查看 771关注 0票数 1

请仍然是新手使用Cassandra,我有一个问题,我想解决,但我已经尝试,但我不能。

我想得到所有的用户谁喜欢一个特定的帖子和所有的帖子,一个特定的用户喜欢,我有一个喜欢和不喜欢按钮,当用户单击一个帖子上的喜欢按钮时,我将信息保存到这些表中,这是有效的,但当用户单击不喜欢按钮时,我如何从下面的表格中删除特定的行

代码语言:javascript
复制
CREATE TABLE social.post_likedby_user (
   userid bigint,
   timeuuid timestamp,
   postid bigint,
   content text,
   creation_date text,
   liked boolean,
   PRIMARY KEY (userid, timeuuid, postid)
)  WITH CLUSTERING ORDER BY (timeuuid DESC);

CREATE TABLE social.user_likeby_post (
   postid bigint,
   timeuuid timestamp,
   userid bigint,
   name text,
   username text,
   email text,
   phone text,
   birthday text,
   PRIMARY KEY (postid, timeuuid, userid)
)  WITH CLUSTERING ORDER BY (timeuuid DESC);

我试过几次查询,但都没有结果

代码语言:javascript
复制
DELETE FROM post_likedby_user WHERE userid = ? AND postid = ?
DELETE FROM user_likeby_post WHERE postid = ? AND userid = ?

在不知道timeuuid的情况下如何查询此表。我认为问题出在timeuuid列,我不想使用ALLOW过滤,因为我读到它对生产环境不好

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-02 13:33:49

在本例中,我们还需要一个表post_timeuuids:

代码语言:javascript
复制
CREATE TABLE social.post_timeuuids (
   userid bigint,
   postid bigint,
   timeuuid timestamp,
   PRIMARY KEY (userid, postid, timeuuid)
) 

因此,要查询timeuuid值,可以运行以下查询:

代码语言:javascript
复制
select timeuuid from post_timeuuids where userid = ? and postid = ?;

现在您可以使用这些值来运行delete查询:

代码语言:javascript
复制
DELETE FROM post_likedby_user WHERE userid = ? AND timeuuid = ? AND postid = ? 

或者,您可以直接从"post_timeuuids“表中删除,而不是删除。在应用程序端,你应该考虑“post_timeuuids”中的数据:如果那里没有时间戳,这意味着用户对那个特定的帖子没有“赞”。

下面的文章解释了为什么没有'timeuuid‘群集键就不能运行post_likedby_user查询

https://rollerweblogger.org/roller/entry/composite_keys_in_cassandra

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48055455

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档