0

在选择 DynamoDB 分区键和排序键以检索聊天中的所有公共和私人消息时需要一些建议。

在同一个聊天室中,用户可以向特定的人发送公共消息和私人消息。

DynamoDB 模型:

For public messages: hashkey - chatId; sortKey - timestamp
For private messages: hashkey - chatId; sortKey - userId#timestamp

我在选择将在单个查询中返回这两种类型的消息的主键时遇到困难。

4

1 回答 1

0

在我的脑海中,我在想你的排序键中需要一些东西,这样你就可以使用 Begins_with 并获取所有消息。所以像 mssg::public::userID::timestamp 或 mssg::private::timestamp 这样的东西。

然后您可以使用 chatId 作为分区键进行查询,然后在排序键上使用 begin_with mssg。这将获取该 chatID 的所有消息,无论它们是公共的还是私有的。下一个问题是你在用时间戳做什么,你需要在同一个查询中做些什么吗?您在帖子中没有提到它,但它在模型示例中。

于 2020-07-21T19:19:00.757 回答