2017-10-02 7 views
0

DynamoDBの4つの異なるテーブルで同じスキャンを実行する必要があります。AWS DynamoDB DocumentClientスキャンパラメータをパラメータ化しますか?複数のスキャンの結果を組み合わせる?

私は現在、AWSのラムダからスキャンを実行するには、このコードを持っている(と、それは単一のテーブルのために働く):

var params = { 
    TableName: "some-table-1", 

    ProjectionExpression: "#state, #type", 
    FilterExpression: "#state = :state and #type = :type", 
    ExpressionAttributeNames: { 
     "#state": "state", 
     "#type": "type" 
    }, 
    ExpressionAttributeValues: { 
     ":state": 'Running', 
     ":sessionType": 'SomeType' 
    } 
}; 
docClient.scan(params, onScan); //onScan function defined somewhere else that writes a metric for # of items meeting this critera 

一般的な改善もいただければ幸いです! (注:stateとsessionTypeはプライマリキーまたはソートキーではありません)

私は、スキャンを実行し、結果を得るためにテーブルの全リストを送信してから、すべてのテーブルの結果を処理できるようにしたい一度。

たとえば、state = RunningおよびsessionType = SomeTypeのすべてのアイテムを4つのテーブルすべてで取得し、すべての4つのテーブル全体で合計を返したいとします。

答えて

0

NoSQLデータベースでスキャンを実行してカウントを取得することは推奨されません。合計値を維持する別個の原子カウンタを維持することができます。

それでも合計をスキャンし、取得したい場合は、

私たちが繰り返しスキャンしたレコードのセット全体を取得することができODM、https://github.com/clarkie/dynogels

を使用しています。

例えば、

Account 
    .scan() 
    .loadAll() 
    .exec(callback); 

はそれがお役に立てば幸いです。

関連する問題