如何使用 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 中从两个不同的位置获取记录,为此我们需要 运行 两个不同的查询。
在他们的 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 中从两个不同的位置获取记录,为此我们需要 运行 两个不同的查询。