DynamoDB中的查询包含KeyConditionExpression中的值列表



我试图在AWS DynamoDB中为多个值提供单个查询,场景是这样的。我想通过给出一个值列表来查询。如果值存在于db中(在一个特定的键,让我们说'mandatoryField'),那么给我这个值,这意味着在过滤结束时,我只想从我的数组输入中得到存在的值。

所以,对于这些项目在我的db:

column: mandatoryField
---------------
1.      value1
2.      value2
3.      value3
4.      value4

在我的查询命令中给出["value2", "value3334", "value7", "value1"]的数组,我只想接收到存在的值:["value2", "value1"]

在aws-cli中尝试了这个查询,同时使用in和CONTAINS函数

aws dynamodb query 
--table-name testTable 
--key-condition-expression '#mandatoryField IN :values' 
--expression-attribute-names '{ "#mandatoryField": "mandatoryField" }' 
--expression-attribute-values '{
":values": { "SS": ["value2", "value3334", "value7", "value1"]}
}'

但收到了我所期望的An error occurred (ValidationException) when calling the Query operation: Invalid operator used in KeyConditionExpression: IN

希望这是足够的描述性来实现我的目标,通过给出一个QUERY

我认为您需要使用--filter-expression而不是--key-condition-expression使用AWS DynamoDBscan命令。

试试这个:

aws dynamodb scan 
--table-name testTable 
--filter-expression 'contains(:values, mandatoryField)' 
--expression-attribute-values '{
":values": { "SS": ["value2", "value3334", "value7", "value1"]}
}' 
--projection-expression 'mandatoryField'

您可以使用ExecuteStatement来为您提供类似BatchQuery的语义。

aws dynamodb execute-statment  
--statement 'SELECT * FROM test-table WHERE mandatoryField IN ["value2", "value3334", "value7", "value1"]'

您最多可以传入50个分区键值。

最新更新