Dynamodb 仅使用全局二级索引更新项目

问题描述 投票:0回答:3

我们可以仅使用全局二级索引更新 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)更新项目。

amazon-dynamodb bigdata nosql
3个回答
15
投票

不可以,您无法更新 GSI 中的项目。您对表中的项目进行更改/更新,这些更新将传播到 GSI。


3
投票

我为此使用的解决方法是首先使用文档客户端执行

query
命令,然后从结果中提取分区键,并使用检索到的值作为键调用
update
方法。


0
投票

您无法直接写入 GSI。您写入一个主表,然后该表与所有 GSI 同步。

来自官方文档

© www.soinside.com 2019 - 2024. All rights reserved.