Amazon dynamodb DynamoDB查询用于动态更改地图对象的嵌套属性

Amazon dynamodb DynamoDB查询用于动态更改地图对象的嵌套属性,amazon-dynamodb,boto3,dynamodb-queries,Amazon Dynamodb,Boto3,Dynamodb Queries,假设我在DynamoDB上有以下对象。此对象是一个映射图,其中每个嵌套映射表示一个问题。嵌套映射的键值对表示issueId:issueDetails。现在假设有100个问题(不断增加或减少),我只想了解每个问题的状态和重要性。我该怎么做呢 { "issues": { "ISU000000000": { "impactOn": "Balance Sheets",

假设我在DynamoDB上有以下对象。此对象是一个映射图,其中每个嵌套映射表示一个问题。嵌套映射的键值对表示issueIdissueDetails。现在假设有100个问题(不断增加或减少),我只想了解每个问题的状态和重要性。我该怎么做呢

{
    "issues": {
        "ISU000000000": {
            "impactOn": "Balance Sheets",
            "issueName": "TestIssue",
            "criticality": "High",
            "status": "open"
        },
        "ISU000000001": {
            "impactOn": "Balance Sheets",
            "issueName": "TestIssue",
            "criticality": "High",
            "status": "open"
        },
        "ISU000000002": {
            "impactOn": "Balance Sheets",
            "issueName": "TestIssue",
            "criticality": "High",
            "status": "open"
        }
    }
}
我知道您可以在DynamoDB上编写一个具有如下属性名称和值的投影表达式:

ProjectionExpression = "issues.#IssueID.criticality, issues.#IssueID.status"
ExpressionAttributeNames = {'#IssueID':'ISU000000000'}
但问题是,在这种方法中,我在ExpressionAttributeNames参数中声明了IssueID。这意味着,使用这种方法,我必须事先声明所有问题。有没有一种方法可以编写一个表达式,这样我就不必声明issueID了?最终目标是能够在大小动态变化的对象中获取上述所需信息(意味着问题将被添加或删除)

注意,我使用的是Boto3 SDK


我的问题有意义吗?请告诉我你的想法。

我的直觉告诉我这是一个次优设计。触发我的是你说它可以是一个不断增长的地图,但单个记录对单个项目的限制为400KB。如果您有频繁变化的数据,我会尝试将项目展平并避免深度嵌套


你是否能够重新设计,使每个项目都是它自己的问题。如果这是你的目标,还有其他方法可以实现多租户。

你的回答一开始让我非常恐慌。但是,经过思考,我找到了一些重新设计和其他解决方法。事实上,我不知道400KB的限制,所以你帮我省去了很多痛苦和痛苦。谢谢别担心,小心点。如果有帮助的话,我有一些示范表可以帮助你。其中一个是假的风电场