DynamoDB DynamoDBQueryExpression混合条件操作符



使用DynamoDBQueryExpression进行复杂查询的最佳方法是什么?

默认情况下,获取将对提供的所有条件执行AND操作。

我如何执行像(C1 &&C2,,(c3 || c4 || c5)?它甚至可能与DynamoDB java api?

DynamoDB使用"com.amazonaws.services.dynamodbv2.document.spec.QuerySpec"支持复杂的条件。您可以使用FilterExpression来编写AND和OR条件。

请参见下面的例子:-

1) withKeyConditionExpression -用于哈希键和范围键表达式

2) withFilterExpression -用于所有其他属性(即除了关键属性)

ItemCollection<QueryOutcome> items = null;
        QuerySpec querySpec = new QuerySpec();
        ValueMap valueMap = new ValueMap();
        valueMap.withString(":autoIdVal", autoID);
        valueMap.withString(":docTypeVal", docType);
        valueMap.withString(":username", username);
        valueMap.withString(":comment", comment);
        Map<String, String> nameMap = new LinkedHashMap<>();
        nameMap.put("#comment", "comment");
        querySpec.withKeyConditionExpression("autoID = :autoIdVal").withFilterExpression("(docType = :docTypeVal AND username = :username) OR (#comment = :comment)")
                .withValueMap(valueMap)
                .withNameMap(nameMap);
        items = table.query(querySpec);
        Iterator<Item> iterator = items.iterator();
        Item itemData = null;
        while (iterator.hasNext()) {
            itemData = iterator.next();
            System.out.println("Json data ====================>" + itemData.toJSONPretty());
        }

相关内容

  • 没有找到相关文章

最新更新