Dynamo DB - 可以更新/插入嵌套字段

kis*_*e k 1 amazon-web-services nosql amazon-dynamodb

我在 dynamo DB 中有一个以下格式的文档。

{ key1: "value1", key2: {sKeya: "A", sKeyB: "B" } }

是否可以更新(通过 JavaScript)Dynamo DB 文档中的直接嵌套字段?BCOZ 我不想再次用所有值更新 key2 。

示例:我尝试了以下查询,但没有成功。相反,它又创建了一个字段 key2.sKeya:“ABC”

UpdateExpression: "set #field = :value", ExpressionAttributeNames: { "#field": "key2.sKeya" }, ExpressionAttributeValues: { ":value": "ABC", }

有人遇到过类似的问题吗?

jen*_*ter 5

您需要将对象键定义为单独的属性名称。

因此“key2”有一个别名,“sKeya”有一个别名。

const AWS = require("aws-sdk");
const DOCCLIENT = new AWS.DynamoDB.DocumentClient();
exports.handler = (event, context, callback) => {
  let entry = {
    TableName: "test",
    Key: {
      "key1": "value1",
    },
    UpdateExpression: "set #parent.#child = :value",
    ExpressionAttributeNames: {
      "#parent": "key2",
      "#child": "sKeya"
    },
    ExpressionAttributeValues: {
      ":value": "ABC",
    },
    ReturnValues: "UPDATED_NEW"
  };
  DOCCLIENT.update(entry, function(err, data) {
    callback(null, 'done');
  });
};
Run Code Online (Sandbox Code Playgroud)