如何在 DynamoDB 中设置表以便能够查询字符串 set/List?

How to setup Tables in DynamoDB to be able to query a string set/List?

目前,我在 DynamoDB 中有一个 table 具有以下架构:


ID : PostID(哈希键)

位置:LocationID(范围键)

标签:字符串列表


现在我希望能够查询标签列表和 table 中的每个项目,并找出哪些帖子具有这些标签。我怎么做?阅读 DynamoDB 文档,我认为我必须设置另一个 table,因为查询无法搜索 List/String 集中的特定字符串,但我无法弄清楚如何构造 table。

例如,项目:


帖子ID:Guid

位置:someLocationString

标签:["Queen"、"Royalty"、"England"]


现在我想查询具有名为 "Queen" 的标签的项目,我希望结果是一组具有该标签的项目。 (帖子 ID + 位置)

最佳结构是什么?添加新标签时如何维护 table?

如果我正确理解了要求,您可以使用 table:

哈希:标签

范围:PostId#LocationId

这样你就可以在 Tag 上查询并获取所有对。

保持两个 table 同步并不是最佳选择,但这完全取决于原子性对您有多重要。也许看看 DynamoDB Transactions,或者做一些 "CAS" 插入。