Cassandra +在查询中使用最后一条记录

时间:2016-09-30 07:09:35

标签: node.js cassandra

我是这个使用nodejs的cassandra数据库的新手。

我有user_activity表。在此表中,数据将根据用户活动插入。

我也有一些用户列表。我需要获取特定用户和最后记录中的数据。

我没有兴趣将查询放入for循环中。有任何其他想法来实现这一目标吗?

示例代码:

var userlist = ["12", "34", "56"];
var query = 'SELECT * FROM user_activity WHERE userid IN ?';
server.user.execute(query, [userlist], {
    prepare : true
}, function(err, result) {
   console.log(results);
});

如何获取最后一个用户列表?

示例:

user id = 12 - need to get last record;
user id = 34 - need to get last record;
user id = 56 - need to get last record;

我需要获得这3条记录。 表格架构:

CREATE TABLE test.user_activity (
    userid text,
    ts timestamp,
    clientid text,
    clientip text,
    status text,
    PRIMARY KEY (userid, ts)
)

2 个答案:

答案 0 :(得分:2)

如果您使用IN过滤器,则无法进行此操作。

如果是单个user_id过滤器,您可以按顺序应用。当然,您需要一个用于插入/更新时间的列。所以查询将是这样的:

SELECT * FROM user_activity WHERE user_id = 12 ORDER BY updated_at LIMIT 1;

答案 1 :(得分:1)

您可以输入N值来获取记录数

SELECT * FROM user_activity WHERE userid IN ? ORDER BY id DESC LIMIT N