简体   繁体   中英

Cassandra + Fetch the last records using in query

I am new in this cassandra database using with nodejs.

I have user_activity table. In this table data will insert based on user activity.

Also I have some user list. I need to fetch the data in that particular users and last record.

I don't interest to put the query in for loop. Have any other idea to achieve this?

Example Code:

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);
});

How to get the user lists for last one ?

Example:

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

I need to get these 3 records. Table Schema:

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

It is not possible if you use the IN filter.

If it is a single user_id filter you can apply order by. Of course you need a column for inserted/updated time. So query will be like this:

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

您可以输入N值以获得记录数

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM