QueryFilter包含多个包含DynamoDb

时间:2017-10-03 11:02:55

标签: amazon-dynamodb aws-sdk

我有文档,此文档存储系统作业。我想获得工作清单,除非我的工作状态包含取消和创建的单词,我不想得到一些工作。

ItemCollection<QueryOutcome> items = index.query(new QuerySpec().withHashKey("deviceId", "string1")
        .withQueryFilters(new QueryFilter("currentState").notContains("CANCELED").notContains("CREATED")));

但是此代码还返回status = CANCELED的作业。 我需要一些帮助。你能来吗? :)

enter image description here

1 个答案:

答案 0 :(得分:0)

查询规范,不包含String属性: -

QuerySpec spec = new QuerySpec()
    .withKeyConditionExpression("deviceId = :v_id") 
    .withFilterExpression("not(contains(currentState, :version) or contains(currentState, :currentState))")
    .withValueMap(
        new ValueMap() 
            .withString(":v_id", "string1") 
            .withString(":version", "CANCELED") 
            .withString(":currentState", "CREATED")
    ); 

ItemCollection<QueryOutcome> items1 = index.query(spec);