我必须在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个表中的总数。
答案 0 :(得分:0)
NoSQL数据库不建议运行扫描以获取计数。您可以维护一个单独的原子计数器来维持总值。
如果您仍想扫描并获得总数,
我们使用ODM,https://github.com/clarkie/dynogels
可以重复扫描并获得整套记录。
例如,
Account
.scan()
.loadAll()
.exec(callback);
希望它有所帮助。