Не удалось выполнить поиск по вложенной собственности в консоли DynamoDB AWS
Можно ли искать вложенные свойства с консоли AWS DynamoDB? Я могу выполнять поиск по всем свойствам верхнего уровня, но поиск по любым вложенным свойствам всегда приводит к пусту набору результатов.
Например, для документа, представленного ниже, я могу сканировать и добавлять фильтр в любое поле верхнего уровня, например id, name и т.д.
Однако я не могу сканировать и фильтровать на устройстве. Я пытаюсь использовать фильтр как device.name = 'Xaomi'
{
id: 'jhfdgu75457y8r',
имя: "Параг",
device: {name: 'Xaomi', страна: 'Китай'}
}
Обратите внимание, что я делаю это с консоли AWS, а не с клиентской библиотеки. Консоль AWS разрешает фильтры на вложенных объектах?
Ответы
Ответ 1
Все данные в DynamoDB сохраняются как строка, двоичный или номер.
Когда вы используете SDK для доступа к DynamoDB, он обычно конвертирует и деконвертирует эти примитивы в сложные типы данных, такие как списки и карты.
Консоль работает только с примитивными типами данных. В этом случае атрибут вашего устройства рассматривается как строка, и поэтому фильтр нельзя фильтровать с помощью вложенного атрибута device.name.
Однако вы можете просто создать строковый фильтр. Например, фильтр по атрибуту устройства, используя оператор contains и значение "name":"Xaomi"
Ответ 2
В поле Тип фильтра "device", а не device.name
и выберите "Содержит" вместо "=" в раскрывающемся списке