[英]Using query IndexName, GSI in DynamoDB and not available begins_with in python
[英]Querying a DynamoDb table using a combination of `begins_with` and `between` conditions
如何使用BETWEEN
和BEGINS_WITH
的組合查詢 DynamoDb 表?
我的表分區和排序鍵的簡化示例如下所示:
PK |SK
my_pk |2022-05-13T08:30:00Z#tag0
my_pk |2022-05-13T08:45:00Z#tag0
my_pk |2022-05-13T08:45:00Z#tag1
my_pk |2022-05-13T08:45:00Z#tag2
my_pk |2022-05-13T09:00:00Z#tag0
my_pk |2022-05-13T09:00:00Z#tag1
如果我的SK
不包含...#tag
后綴,我可以使用這樣的KeyConditionExpression
:
"KeyConditionExpression": "#pk = :pk AND #sk BETWEEN :start AND :end"
其中start
和end
分別是2022-05-13T08:45:00Z
和2022-05-13T09:00:00Z
,但是當后綴存在時我不確定該怎么做。
注意:我從不需要使用tag
進行查詢,它只是為了確保復合主鍵是唯一的。
注2:我使用python和boto3來執行查詢。
您可以在 where :end
= 2022-05-13T09:00:00Z$
之間使用。 美元符號是 ASCII 中哈希后的下一個值,因此這將捕獲以2022-05-13T09:00:00Z#
開頭的所有值。
LSI 或 GSI 中的分區鍵和排序鍵不需要是唯一的。 所以你可以創建一個 LSI,並在那里使用日期列作為排序鍵。
這篇文章正是在談論這個 - 本地二級索引。
為了確保復合主鍵的唯一性,您可以在
sort key
列中存儲一些隨機字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.