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

问题描述 投票:0回答:1

我正在尝试在 AWS DynamoDB 中执行单个查询,给出多个值,场景就是这样。 我想通过给出一个值列表来查询。如果该值存在于 db 中(在特定键处,假设为“mandatoryField”),则给我该值,这意味着在过滤结束时,我只想取回数组输入中存在的值。

所以,对于我数据库中的这些项目:

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

希望这是足够的描述,可以通过提出问题来实现我的目标

arrays amazon-dynamodb aws-cli dynamodb-queries
1个回答
0
投票

我认为您需要在 AWS DynamoDB

--filter-expression
命令中使用
--key-condition-expression
而不是
query

根据您的需要更改后试试这个:

aws dynamodb query \
--table-name testTable \
--filter-expression 'mandatoryField = :value1 OR mandatoryField = :value2' \
--expression-attribute-values '{":value1": {"S": "value1"}, ":value2": {"S": "value2"}, ":value3": {"S": "value3"}, ":value4": {"S": "value4"}}' \
--projection-expression 'mandatoryField'
© www.soinside.com 2019 - 2024. All rights reserved.