node.js
  • cassandra
  • 2016-09-30 164 views 0 likes 
    0

    我是這個cassandra數據庫中使用nodejs的新手。Cassandra +獲取查詢中使用的最後記錄

    我有user_activity表。在此表中,數據將根據用戶活動進行插入。

    另外我有一些用戶列表。我需要獲取特定用戶和最後記錄中的數據。

    我不想把查詢放在循環中。有任何其他想法來實現這一目標嗎?

    示例代碼:

    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) 
    ) 
    
    +0

    你好,你可以提供一些模式說明多少? –

    +0

    你只想得到最後一個用戶的詳細信息? – abdulbarik

    +0

    更新表架構@GuillaumeS – RSKMR

    回答

    2

    如果使用IN過濾器這是不可能的。

    如果它是單個user_id過濾器,則可以按順序應用。當然,你需要一個插入/更新時間的列。所以查詢將是這樣的:

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

    它不是一個單一的。需要獲得多個用戶的最後記錄。 – RSKMR

    +0

    那麼它在查詢中是不可能的。您必須在代碼級別處理 –

    +0

    可以使用executeBatch獲取數據嗎? (我的意思是批量選擇多個查詢) – RSKMR

    1

    你可以把N值獲得的記錄

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

    我期待的結果是讓每個用戶獲得最後的記錄。 – RSKMR

    +0

    我的查詢確實在你的案例中得到了3條記錄,如果把它放在'3',那將得到你提到的那個用戶的最後三條記錄。不是嗎? – abdulbarik

    +0

    不好意思,如果我的內容是明確的意思。我的問題是需要得到這3個用戶(每個人和每個人)最後記錄的結果 – RSKMR

    相關問題