[英]OR-query on multiple attributes in Amazon DynamoDB
我有一張這樣的桌子:
交通工具
編號(PK) | 創建數據 | 托運人編號 | 承運商編號 | 收貨人編號 |
---|---|---|---|---|
1個 | 23 | 聯系人3 | 聯系人2 | 聯系人1 |
2個 | 24 | 聯系人1 | 聯系人2 | 聯系人3 |
3個 | 28 | 聯系人3 | 聯系人2 | 聯系人4 |
我的訪問模式是:
我如何在 DyanomoDB 中執行此操作?
我想創建一個 GSI。 但隨后我需要為每個列創建一個單獨的 GSI,這意味着我需要自己在列上加入查詢結果。 也許有更簡單的方法。
我會在表上創建一個 GSI 並將您的單個記錄拆分為多個。 這會使寫入稍微復雜一些,因為您編寫了多個實體,但我會這樣做:
PK | SK | 類型 | GSI1PK | GSI1SK | 其他屬性 |
---|---|---|---|---|---|
運輸#1 | 運輸#1 | 運輸 | createDt, (shipperId, carrierId, consigneeId)... | ||
運輸#1 | 聯系#SHIP | 托運人聯系方式 | 聯系人#contact3 | 運輸#1#SHIP | ... |
運輸#1 | 聯系#CARR | 運營商接觸 | 聯系人#contact2 | 運輸#1#CARR | ... |
運輸#1 | 聯系方式#CONS | 收貨人聯系方式 | 聯系人#contact1 | 運輸#1#CONS | ... |
PK=TRANSP#<id>
進行查詢PK=TRANSP#<id> and SK=TRANSP<id>
上執行GetItem
(如果聯系信息相當 static,您也可以在此處復制聯系信息。)PK=CONTACT#<id> and SK starts with TRANSP
在GSI1
上以 TRANSP 開頭如果你真的需要服務器端排序,你可以選擇不同的GSI1SK
,也許在它前面加上dt
值,但我可能只是在客戶端做。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.