如何使用 dynamodb 查询对排序键设置多个条件?

How to make several conditions on sort key with dynamodb queries?

在他们的 documentation AWS 中,关于查询的 KeyConditionExpression 说:

The condition can optionally perform one of several comparison tests on a single sort key value. This allows Query to retrieve one item with a given partition key value and sort key value, or several items that have the same partition key value but different sort key values.

但是我无法让它工作,例如制作类似 pk = :pk AND (begins_with(sk,:foo) OR begins_with(sk,:bar)) 的东西,我收到错误 Invalid operator used in KeyConditionExpression: OR。我在较早的帖子上看到一些人也有这个问题,说 dynamodb 不允许这样做,但后来我不明白 AWS 在他们的文档中关于对排序键进行多项测试的意思。这是什么意思,它是如何工作的?

谢谢,

特定分区中的记录按 range/sort 键的顺序存储。从特定分区检索数据时,我们可以检索与排序键匹配的记录或与排序键相邻的记录集。

因此,Dynamo 支持的查询操作的所有逻辑操作EQ | LE | LT | GE | GT | BEGINS_WITH | BETWEEN 仅用于获取相邻记录,而不是随机记录。

您尝试使用 OR 的查询,(begins_with(sk,:foo) OR begins_with(sk,:bar) 将导致在 Dynamo 中从两个不同的位置获取记录,为此我们需要 运行 两个不同的查询。