【问题标题】:Making delete, update, insert and get operations nested json data structure on dynamodb在 dynamodb 上进行删除、更新、插入和获取操作嵌套 json 数据结构
【发布时间】:2021-03-24 10:28:00
【问题描述】:

我的数据结构如下:

我想更新,删除房间列表中带有 roomId 的房间。我应该向 roomId 添加二级索引吗?应该如何更新和删除查询?我也想用 roomId 获取房间信息。

移除房间,代码结构可以这样吗:

  const roomItem = {
    TableName: 'Home',
    Key: {
      homeId: homeId
    },
    IndexName: 'roomId-index',
    ConditionExpression: 'rooms.roomId = :roomId',
    ExpressionAttributeValues: {
      ':roomId': roomId
    }
  };
  await dynamodb.delete(roomItem).promise();

【问题讨论】:

    标签: node.js amazon-dynamodb


    【解决方案1】:

    在非顶级属性上创建二级索引

    您不能在 rooms.roomId 上创建一个 Secondary Index,它是一个嵌套属性

    https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/SecondaryIndexes.html

    索引键模式中的每个属性都必须是顶级属性 字符串、数字或二进制类型。

    --

    要能够通过roomId 检索,您可以选择:

    • 使用Scan,或
    • 重新设计您的架构,使roomId 成为表的Key 的一部分,在一个新的Table 中,这样您就可以使用实现毫秒级的Query 检索

    例子

    Hash Key (House Id)  | Range Key (Room Id)
    ---------------------+---------------------
    55555555             | 1
    ---------------------+---------------------
    55555555             | 2
    

    【讨论】:

    • 感谢您的回答,但您说扫描是什么意思?
    猜你喜欢
    • 2011-01-31
    • 1970-01-01
    • 2021-07-09
    • 2012-03-18
    • 2021-01-26
    • 1970-01-01
    • 2011-07-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多