#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. Хм, понял. Да, я тоже много исследовал, но не мог понять. Спасибо за разъяснения.