У меня есть такая структура:
{
Id: "55e0173c485dd",
Revisions: [
{
CAS: "2132-123-123",
ComponentName: "bar"},
{
ComponentName: "baz"}
]
}
Можно ли выполнить проверку по «ComponentName» пункта в списке?
Я нашел единственный способ сканирования с такими параметрами:
[
'ExpressionAttributeValues' => [
':component' => [
'M' => [
'ComponentName' => ['S' => 'bar']
]
]
],
'FilterExpression' => 'contains (Revisions, :component)'
];
Но он проверяет полное соответствие элемента и не может найти элемент с полем «CAS» в моем случае.
Мне нужно что-то вроде «$ elemMatch» в MongoDB:
http://docs.mongodb.org/manual/reference/operator/query/elemMatch/
DynamoDB в настоящее время не поддерживает запрос / фильтрацию атрибута в карте в списке. Вы, как вы сказали, можете указать всю карту и использовать выражение «contains (path.to.list,: map)» и указать полную карту в значениях атрибутов выражения.
Тем не менее, если вы платите за считывание всех предметов с помощью сканирования, вы можете просто извлечь их и обработать их на стороне клиента, чтобы оценить ваше состояние.
Других решений пока нет …