DynamoDB: выражение фильтра для вложенных объектов коллекции - PullRequest
0 голосов
/ 12 декабря 2018

Учитывая приведенную ниже структуру данных, я хотел бы написать выражение фильтра для запроса всех элементов, соответствующих данному выражению (items.name =: param)

{
    "id" : "1",
    // nested collection
    "nestedValues": [
         {
             "id" : "1",
             "name":"item1" 
         },
         {
             "id": "2",
             "name":"item2" 
         }
    ]
}

Я просто попытался (но это нене работает):

String filterExpression = "nestedValues.name = :param";
Map valueMap = new HashMap();
valueMap.put(":param", "item2");
ItemCollection itemCollection = table.scan(
       new ScanSpec()
       .withFilterExpression(filterExpression)
       .withValueMap(valueMap)
);

Когда я пытался (Конечно, это работает, так как я указал индекс в коллекции):

String filterExpression = "nestedValues[1].name = :param";
Map valueMap = new HashMap();
valueMap.put(":param", "item2");
ItemCollection itemCollection = table.scan(
        new ScanSpec()
        .withFilterExpression(filterExpression)
        .withValueMap(valueMap)
);

Как я могу легко получить все элементы базы данных, которые имеютпредмет с именем "item2" в коллекции nestedValues?

Заранее спасибо

(я также спрашивал на форуме AWS здесь: https://forums.aws.amazon.com/thread.jspa?messageID=881391&#881391)

...