我们可以仅使用全局二级索引更新 dynamodb 项目吗?
$response = $dynamodbClient->updateItem(array(
'TableName' => 'feed',
'Key' => array(
'feed_guid' => array('S' => 'ac1e9683832ad2923f0bd84b91f34381'),
'created_date' => array('N' => '1439295833'),
),
"ExpressionAttributeValues" => array (
":val1" => array('N' => '1')
) ,
"UpdateExpression" => $updateExpression,
'ReturnValues' => 'ALL_NEW'
));
在上面的代码中,我想替换关键部分并使用全局二级索引(即user_id)更新项目。
不可以,您无法更新 GSI 中的项目。您对表中的项目进行更改/更新,这些更新将传播到 GSI。
我为此使用的解决方法是首先使用文档客户端执行
query
命令,然后从结果中提取分区键,并使用检索到的值作为键调用 update
方法。
您无法直接写入 GSI。您写入一个主表,然后该表与所有 GSI 同步。
来自官方文档