DynamoDB ProjectionExpression для извлечения определенных атрибутов ВСЕХ элементов в списке - PullRequest
0 голосов
/ 02 мая 2020

В DynamoDB у меня есть таблица Player, которая содержит list символов. Каждый символ в свою очередь является map в терминах DynamoDB. У персонажей есть некоторые атрибуты, такие как level, exp и многие другие. И конкретная задача c для меня сейчас состоит в том, чтобы выбрать только определенные атрибуты, не все из них, а для ВСЕХ символов, а не только для одного. Я уже понял, как получить эти атрибуты из одного символа. Я использую 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',

Но я не могу найти синтаксис для этого, также поиск в Google не помогло, и я начал сомневаться, что это даже возможно.

1 Ответ

0 голосов
/ 02 мая 2020

Это действительно интересный вопрос, мне никогда не приходилось делать что-то подобное. Можно даже утверждать, что это можно рассматривать как красный флаг, что это не лучшая модель данных для динамо.

Я хотел бы рассмотреть возможность извлечения объектов массива в другую таблицу или даже иметь объекты в той же таблице, как они рекомендуют иметь единый дизайн таблицы https://www.alexdebrie.com/posts/dynamodb-single-table/

Если это то, что вы можете сделать из того, что я знаю, только фильтруя массив и фильтруя свойства после в коде, не полагаясь на динамо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...