请使用Cassandra仍然是新手我有一个问题我想解决但尝试但我无法解决。
我希望得到所有喜欢特定帖子的用户以及特定用户喜欢的所有帖子,并且我有一个喜欢和不同的按钮,当用户点击帖子上的按钮时,我将信息保存到这些表格中,正在工作,但当用户单击不同的按钮时,如何从下面的表中删除该特定行
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);
我尝试了几个查询但没有结果
DELETE FROM post_likedby_user WHERE userid = ? AND postid = ?
DELETE FROM user_likeby_post WHERE postid = ? AND userid = ?
如何在不知道timeuuid的情况下查询此表。我认为问题是timeuuid列,我不想使用ALLOW FILTERING,因为我读到它对生产不利
答案 0 :(得分:2)
在这种情况下,我们还需要一个表post_timeuuids:
CREATE TABLE social.post_timeuuids (
userid bigint,
postid bigint,
timeuuid timestamp,
PRIMARY KEY (userid, postid, timeuuid)
)
因此,要查询timeuuid值,请运行以下查询:
select timeuuid from post_timeuuids where userid = ? and postid = ?;
现在您可以使用这些值来运行删除查询:
DELETE FROM post_likedby_user WHERE userid = ? AND timeuuid = ? AND postid = ?
或者作为替代而不是删除,您只需删除" post_timeuuids"表。在应用程序方面,您应该考虑" post_timeuuids"中的数据:如果没有时间戳存在,则意味着使用没有"喜欢"对于那个特定的帖子。
下面的文章解释了为什么您无法在没有&time;注意事项的情况下为post_likedby_user运行查询?聚类键
https://rollerweblogger.org/roller/entry/composite_keys_in_cassandra