Условие ИЛИ в выражении фильтра для Dynamo DB

У меня есть вариант использования, когда мне нужно программно запросить базу данных Dynamo, используя выражение запроса Dynamo DB. например, предположим, что для A и B есть два атрибута, и мне нужно выражение фильтра, например (A='Test' OR A ='Test1') and B='test2'.

Я искал, связанный с этим, но не нашел полезного ресурса. Я новичок в динамо дб.


person Sumit Gulati    schedule 20.12.2016    source источник
comment
Либо атрибут A, либо атрибут B является ключом секции. Другими словами, каков ваш ключ раздела и ключ сортировки таблицы? Кроме того, дайте мне знать язык программирования, который вы используете?   -  person notionquest    schedule 21.12.2016


Ответы (1)


Вот как вы это делаете в java

Table table = dynamoDB.getTable(tableName);
QuerySpec spec = new QuerySpec()
   // .withKeyConditionExpression("partitionKey = :id and sortKey > :range") // In case filter expression is on key attributes
    .withFilterExpression("(A = :a1 or A = :a2) and B = :b")
    .withValueMap(new ValueMap()
        //.withString(":id", "Partition key value")
        //.withString(":range", 100)
        .withString(":a1", "Test")
        .withString(":a2", "Test1")
        .withString(":b", "test2"))
   // .withConsistentRead(true);

ItemCollection<QueryOutcome> items = table.query(spec);

Если ваши A и B являются ключевыми атрибутами, вы указываете их в KeyConditionExpression, иначе все идет в FilterExpression.

Основное отличие заключается в том, что ключевые выражения применяются к ключевым атрибутам, как следует из названия, и записи извлекаются из-за того, за что вы платите, в то время как выражение фильтра предоставляется бесплатно и применяется после извлечения этих записей, чтобы вернуть вам только соответствующие записи условия фильтра.

Чтобы узнать больше, прочитайте http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html#FilteringResults

http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ExpressionPlaceholders.html

person gitesh.tyagi    schedule 28.12.2016