Операция получения данных DynamoDB с вложенным запросом

#amazon-dynamodb #aws-appsync

#amazon-dynamodb #aws-appsync

Вопрос:

Итак, моя ситуация такова, что у меня есть приведенные ниже данные JSON в таблице AWS DynamoDB user:

 [{
        "name": "data1",
        "addresses": [{
                "city": "Mumbai",
                "state": "Maharashtra"
            },
            {
                "city": "Chennai",
                "state": "Tamil Nadu"
            }
        ]
    },
    {
        "name": "data2",
        "addresses": [{
            "city": "Amritsar",
            "state": "Punjab"
        }]
    }
]
  

Теперь мне нужно получить всех пользователей, у которых есть такие города, как Мумбаи и Амритсар. Итак, как я должен создать запрос, чтобы получить этот результат.

Я попытался выполнить сканирование с помощью вложенного запроса и использовал GetBatch для поиска по нескольким значениям. Но одновременного выполнения этого не происходит. Может ли кто-нибудь осветить эту проблему? Я пытаюсь сделать это на AWS AppSync.

Спасибо!!!

Ответ №1:

К сожалению, DynamoDB не поддерживает запросы вложенных атрибутов таким образом.

Вы смоделировали отношение «один ко многим» между пользователями и адресами, сохранив адреса в сложном атрибуте. Это распространенный шаблон для моделирования отношений «один ко многим». Недостатком этого шаблона является то, что вы не можете поддерживать какие-либо шаблоны доступа, которые извлекают пользователей по их адресу.

Вместо этого вам нужно будет смоделировать отношение «один ко многим» таким образом, чтобы поддерживать выборку пользователей по адресу. В идеале адрес должен быть встроен в первичный ключ, чтобы вы могли выполнить быструю query операцию.

Комментарии:

1. Хм, понял. Да, я тоже много исследовал, но не мог понять. Спасибо за разъяснения.