У меня есть таблица DynamoDB, которая имеет следующий формат
{
id: "1234" (Primary Key, String)
billNumber: "01" (Sort Key, String)
month: 1 (Number)
product: "Apple" (String)
itemLocation": "Aisle 1" (String)
}
Каждый продукт записывается в таблицу отдельно, поэтому продукты не могут быть записаны в одну строку, и они не могут обновить существующая запись для добавления к значению в поле продукта.
Я хочу знать, как запросить или отсканировать эту таблицу DDB, чтобы найти все itemLocations, которые id "1234"
приобрел за месяц 1
, где значение в поле Product соответствует списку заданных продуктов.
У меня также есть глобальный вторичный индекс по id-месяцу, который я могу использовать, чтобы найти все строки, купленные пользователем за месяц.
Значение, если таблица выглядела как
id | billNumber | month | product | itemLocation
1234 | 01 | 1 | Apple | Aisle 1
1234 | 02 | 1 | Banana | Aisle 2
1234 | 03 | 1 | Cherry | Aisle 3
1234 | 04 | 1 | Coke | Aisle 4
и я хотел получить itemLocations, которые id "1234"
купил в месяц "1"
, где продукты были одного из {"Apple", "Banana", "Cherry"}
. Меня возвращали бы каждую строку, кроме строки кока-колы, как показано ниже.
id | billNumber | month | product | itemLocation
1234 | 01 | 1 | Apple | Aisle 1
1234 | 02 | 1 | Banana | Aisle 2
1234 | 03 | 1 | Cherry | Aisle 3
Возможно ли это в одном запросе или сканировании без необходимости запрашивать каждый продукт отдельно? Я полагаю, что мог бы решить проблему в моем примере, выполнив 3 запроса. Один и тот же идентификатор и месяц во всех 3 запросах и разные продукты в каждом запросе.
Самое близкое, что я получил, чтобы увидеть что-то, что могло бы работать, это Выражение условия DDB для этого, но это не кажется, не используется для запроса, а для операций CRUD.