我已阅读DynamoDB文档here。我的场景与提名任何字段作为检索的关键点没有什么不同。我的数据看起来像
RandomID(Unique) Category date_created isUsed
------------------------------------------------------
12355 ABC 03/02 false
14682 ABC 03/02 false
19684 ABC 03/20 false
12357 BCA 03/04 true
16924 ABC 03/14 true
12352 ABC 03/02 true
32358 BCA 03/14 false
RandomId:表中只有唯一的东西,需要检索。
类别:每个类别都可以包含任意数量的已分配和未分配的随机数。
创建Randomid时creationDate:
isUsed:是否已使用randomid。
我想为单个类别获取2个未使用的(isUsed =' false')随机ID(ifexists)? 示例:如果我查询我的表格,请给我两个未使用的ID以用于类别' ABC''那么我应该得到这些结果中的任何一个
{12355, 14682}
{14682, 19684}
{12355, 19684}
我的问题是: 1.我的哈希钥匙在这里是什么?因为这个表中唯一的东西是我的randomid。
保持“使用”的想法'作为排序键但布尔值不被接受为排序键?在Dyanmo中创建样本表时,我无法找到该类别。
我的钥匙是什么?
任何帮助都将不胜感激。
答案 0 :(得分:0)
您可以预先计算结果。为什么不使用名为locationUsed
的可选属性(字符串)而不是使用布尔值isUsed,并在首次使用其中一个随机ID时更新项目。如果使用分区键randomID
和排序键locationUsed
创建GSI,则此GSI将仅包含应用程序已使用的随机ID的项目。您可以通过对随机ID项使用条件更新来保护自己免受此GSI视图与基表之间的竞争条件的影响,特别是ConditionExpression = attribute_not_exists(locationUsed)
。