Учитывая вашу модель стола, я не знаю, как ответить на ваш вопрос.Но я могу предложить вам другую модель.:)
Проблема вашей модели в том, что вы хотите запросить length(prices)
.Насколько я знаю, DynamoDB не возвращает это значение само по себе.
Я предлагаю вам создать:
- столбец
nprices : number
, - GSI (глобальный вторичный индекс) с выбранным хешем и ключом диапазона, начинающимся с
nprices
.Пример: hash = url, range = nprices_vendor.
Вы можете запросить базу данных с помощью чего-то вроде:
db.query({
TableName: 'MY_TABLE_NAME',
KeyConditionExpression: '#pk = :pk AND #sk > :skLow', # lexicographical comparison
ExpressionAttributeNames: {
'#pk': 'url', # partition key
'#sk': 'nprices_vendor', # sorting key
},
ExpressionAttributeValues: {
':pk': 'http://example.com',
':skLow': '2',
},
}). Обещание ()
Но это еще не лучшее решение.Что вы должны сделать, это изменить свою таблицу и разместить каждую цену в отдельном ряду.Это еще одна проблема.:)