参数化AWS DynamoDB DocumentClient扫描参数?结合多次扫描的结果?

时间:2017-10-02 22:50:11

标签: amazon-web-services amazon-dynamodb aws-lambda

我必须在DynamoDB中的4个不同表中运行相同的扫描。

我目前有这段代码从AWS lambda执行扫描(它适用于单个表):

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不是主键或排序键)

我只是希望能够运行扫描并发送整个表列表以获取结果,然后立即处理所有表的结果。

因此,例如,我希望在所有4个表中获取state = Running和sessionType = SomeType的所有项,并返回所有4个表中的总数。

1 个答案:

答案 0 :(得分:0)

NoSQL数据库不建议运行扫描以获取计数。您可以维护一个单独的原子计数器来维持总值。

如果您仍想扫描并获得总数,

我们使用ODM,https://github.com/clarkie/dynogels

可以重复扫描并获得整套记录。

例如,

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

希望它有所帮助。