Amazon dynamodb dynamoDB-通过主键数组从数据库中获取多个项
我有一个用户id数组,我想从dynamoDB表中获取所有具有该id的用户 在文档中没有找到它Amazon dynamodb dynamoDB-通过主键数组从数据库中获取多个项,amazon-dynamodb,aws-sdk,Amazon Dynamodb,Aws Sdk,我有一个用户id数组,我想从dynamoDB表中获取所有具有该id的用户 在文档中没有找到它 有什么想法吗?您可以为此使用BatchGetItem API 当然,在不了解表模式的情况下,我无法帮助您处理任何代码片段。但是您可以查看文档。我最终使用了batchGet,一种 不支持具有相同密钥的多个项目,因此我必须反复定义密钥,如下所示: var dynamoConfig = { sessionToken: process.env.AWS_SESSION_TOKEN, region:
有什么想法吗?您可以为此使用BatchGetItem API
当然,在不了解表模式的情况下,我无法帮助您处理任何代码片段。但是您可以查看文档。我最终使用了batchGet,一种 不支持具有相同密钥的多个项目,因此我必须反复定义密钥,如下所示:
var dynamoConfig = {
sessionToken: process.env.AWS_SESSION_TOKEN,
region: process.env.AWS_REGION
};
var dynamodbDocClient = new AWS.DynamoDB.DocumentClient(dynamoConfig);
var params = {
RequestItems: {
tableName: {
Keys: [
{
id: 'user1Id'
},
{
id: 'user2Id'
},
{
id: 'user3Id'
}
]
}
}
}
dynamodbDocClient.batchGet(paramsForQueringFormerEvaluators, function(err, data) {
if (err) {
console.log('createEvaluation: get former evaluators: err: ', err);
return;
}
var users = data.Responses.tableName;
console.log('createEvaluation: get former evaluators: ', users);
});
您可能可以使用这个方法
我目前正在使用python包。因此,代码如下所示:
table = boto3.resourse('dynamodb').Table('users-table-name')
response = table.scan(
ScanFilter={'user-id': {
'AttributeValueList': user_ids,
'ComparisonOperator': 'IN' }
}
)
但我不确定使用BatchGetItem
或Scan
有什么更好。这可能取决于两个因素:
table.item\u count
)计数(用户ID)
)如果
count(user_id)1
,那么您需要使用Scan
在您的案例中,什么是用于查询评估器的参数?params?如果知道要查找的项目id,请避免扫描操作。执行它们的成本很高,因为必须扫描完整的数据集(可能跨分区)。