Javascript Dynamodb:使用地图索引更新地图数组

Javascript Dynamodb:使用地图索引更新地图数组,javascript,amazon-web-services,amazon-dynamodb,dynamodb-queries,Javascript,Amazon Web Services,Amazon Dynamodb,Dynamodb Queries,我试图更新Dynamodb中对象的贴图数组中的奇异值, 我的代码如下所示 var update_score = { TableName: 'ABC', Key:{ "SortKey": "ABC123", "RangeKey": "abc_123_xy

我试图更新Dynamodb中对象的贴图数组中的奇异值, 我的代码如下所示

var update_score = {
                    TableName: 'ABC',
                    Key:{
                        "SortKey": "ABC123",
                         "RangeKey": "abc_123_xyz"
                    },
                    UpdateExpression: "set #lp[0].#grd = :num",
                   
                    ExpressionAttributeNames :{
                        '#lp': 'scores',
                        '#grd':'score1'
                       
                    },
                    ExpressionAttributeValues:{
             
                    ':num': 35
                    },
                    ReturnValues:"UPDATED_NEW"
                };
            console.log("getting in params1", update_score);
            docClient.update(update_score, function(err, data) {
                if (err) {
                    console.error("Unable to update item. Error JSON:", JSON.stringify(err, null, 2));
                    callback(null,JSON.stringify(err, null, 2));
                } else {
                    console.log("UpdateItem succeeded:", JSON.stringify(data, null, 2));
                    callback(null,JSON.stringify(data, null, 2));
                }
            });

UpdateExpression:“set#lp[0]。#grd=:num”,

因为我想扩展这个逻辑,允许前端通过变量更新发送的值,而不仅仅是特定的值,比如
[0]

我试过了

var update_score = {
                    TableName: 'ABC',
                    Key:{
                        "SortKey": "ABC123",
                         "RangeKey": "abc_123_xyz"
                    },
                    UpdateExpression: "set #lp[#index].#grd = :num",
                   
                    ExpressionAttributeNames :{
                        '#lp': 'scores',
                        '#grd':'score1',
                        '#index' : indexOf_score_to_be_updated
                       
                    },
                    ExpressionAttributeValues:{
             
                    ':num': 35
                    },
                    ReturnValues:"UPDATED_NEW"
                };

谢谢你的帮助

我认为答案是需要在
UpdateExpression
本身中放入一个实际整数。当我为Scylla交流发电机编写测试时,一个与DynamoDB兼容的开源数据库,我注意到不幸的是,您也不能使用expressionattributevalue-
set#lp[:index]。#grd=:num
也不起作用