[英]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.