如何使用dynamodb查询对排序键进行几个条件?



在他们的文档中,AWS说KeyConditionExpression用于查询:

条件可以选择对单个排序键值执行几个比较测试中的一个。这允许Query检索具有给定分区键值和排序键值的一个项目,或者具有相同分区键值但不同排序键值的几个项目。

然而,我不能设法使它的工作,例如,使像pk = :pk AND (begins_with(sk,:foo) OR begins_with(sk,:bar))我得到错误Invalid operator used in KeyConditionExpression: OR。我看到一些人在老帖子上也有这个问题,说dynamodb不允许这样做,但后来我不明白AWS在他们的文档中关于在排序键上做几个测试的意思。这是什么意思,它是如何工作的?

谢谢,

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

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

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

最新更新