簡體   English   中英

使用“begins_with”和“between”條件的組合查詢 DynamoDb 表

[英]Querying a DynamoDb table using a combination of `begins_with` and `between` conditions

如何使用BETWEENBEGINS_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"

其中startend分別是2022-05-13T08:45:00Z2022-05-13T09:00:00Z ,但是當后綴存在時我不確定該怎么做。

注意:我從不需要使用tag進行查詢,它只是為了確保復合主鍵是唯一的。

注2:我使用python和boto3來執行查詢。

您可以在 where :end = 2022-05-13T09:00:00Z$之間使用。 美元符號是 ASCII 中哈希后的下一個值,因此這將捕獲以2022-05-13T09:00:00Z#開頭的所有值。

LSI 或 GS​​I 中的分區鍵和排序鍵不需要是唯一的。 所以你可以創建一個 LSI,並在那里使用日期列作為排序鍵。

這篇文章正是在談論這個 - 本地二級索引

這是該頁面的屏幕截圖。 在此處輸入圖像描述

為了確保復合主鍵的唯一性,您可以在sort key列中存儲一些隨機字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM