Фильтрация сканирования DynamoDB по глубоко вложенному значению

У меня есть довольно вложенная структура объектов, которую я хочу просмотреть в dynamodb. Это выглядит примерно так:

ProductGroup
| id
| customerId
| serviceId
| [assignedAssets] (An Array of Assets objects, each of which has the following)
| | id
| | sku
| | [instances] (an array of Instance objects, each of which has the following)
| | | id
| | | friendlyName

Если бы я хотел найти ProductGroup, который содержал экземпляр, чей id был, скажем, «instance10», есть ли какая-то комбинация in=операторов and, которую я мог бы использовать для использования выражений фильтра Dynamo? Использование JavaScript SDK, если это имеет значение.

1 ответ

  1. Если вы также знаете идентификатор ресурса, вместо использования массивов можно использовать карты для фильтрации на стороне сервера.

    ProductGroup
    | id
    | customerId
    | serviceId
    | {assignedAssets} (A Map of Asset objects, where the key is id)
    | | id
    | | sku
    | | {instances} (A Map of Instance objects, where the key is the id)
    | | | id
    | | | friendlyName
    

    Здесь выражение фильтра будет attribute_exists(assignedAssets.#assignedAssetId.instances.#instanceId)