Amazon dynamodb DynamoDB ProjectionExpression,用于检索列表中所有项的某些属性

Amazon dynamodb DynamoDB ProjectionExpression,用于检索列表中所有项的某些属性,amazon-dynamodb,Amazon Dynamodb,在DynamoDB中,我有Player表,其中包含字符列表。 在DynamoDB术语中,每个字符依次是一个映射。 字符具有一些属性,如level、exp和许多其他属性。 我现在的具体任务是只选择某些属性,而不是所有属性,而是选择所有字符,而不仅仅是一个字符。 我已经理解了如何从单个字符获取这些属性。 我使用的是node.js,因此我的参数如下: const params = { 'TableName': 'Player', 'Key': { 'APIKey': 'pd-iac3G

在DynamoDB中,我有
Player
表,其中包含
字符列表
。 在DynamoDB术语中,每个字符依次是一个
映射。
字符具有一些属性,如
level
exp
和许多其他属性。 我现在的具体任务是只选择某些属性,而不是所有属性,而是选择所有字符,而不仅仅是一个字符。 我已经理解了如何从单个字符获取这些属性。 我使用的是node.js,因此我的参数如下:

const params = {
    'TableName': 'Player',
    'Key': { 'APIKey': 'pd-iac3G' },
    'ProjectionExpression': 'characters[0].#level, characters[0].exp',
    'ExpressionAttributeNames': { '#level': 'level' }
};
level
是保留关键字,因此它被提取到
ExpressionAttributeNames

但是为了获取所有字符的这些属性,我想写一些类似的东西:

'ProjectionExpression': 'characters.#level, characters.exp',
或许

'ProjectionExpression': 'characters[*].#level, characters[*].exp',

但是我找不到任何语法,谷歌搜索也没有帮助,我开始怀疑它是否可能。这实际上是一个有趣的问题,我从来没有必要做这样的事情。他甚至会争辩说,这可能被视为一个危险信号,表明它不是迪纳摩的最佳数据模型

我会考虑将数组的对象提取到另一个表中,或者甚至在同一个表中有对象,就像他们推荐的具有单表设计

的一样。
如果这是我所知道的,您可以在代码中只过滤数组和之后的属性,而不依赖于dynamo。

谢谢您的回答!是的,我也在考虑将列表提取到单独的表中,这是我一开始计划的,但后来我想“嗯,这主要是关系方法,DynamoDB允许存储嵌套数据,播放器现在只能有3个字符,所以为什么不将它们存储为嵌套列表呢?”。但现在我看到,若您在选择记录中的数据子集时遇到问题,那个么最好使用单独的表。我只是有点惊讶DynamoDB有非常灵活的表达式,但可能他们没有考虑到这种情况。因为他们甚至建议使用单表方法,他们会说他们不想支持具有大量选项的对象。但是,您的用例将被阻止,因为:/I我知道您可以在其他nosql上执行此操作,例如MongoDb