首页 > 解决方案 > Dynamodb:List 属性索引和查询 NOT_CONTAINS

问题描述

我试图弄清楚(此时我认为答案是否定的)是否可以在列表属性上建立索引并在该属性上查询 NOT_CONTAINS。

Example table:
Tasks

Task_id: string

solved_by: List<String> # stores list of user_ids who previously solved  this task.

我的查询是:给我当前用户尚未解决的所有任务

select * from tasks where tasks.solved_by NOT_CONTAINS current_user_id

是否可以在没有完整扫描的情况下执行此操作。我尝试创建一个类型的属性,L但 aws cli 错误说Member must satisfy enum value set: [B, N, S]

如果 dynamodb 无法做到这一点,请建议我可以使用什么数据存储。

非常感谢任何帮助。谢谢!

标签: amazon-dynamodb

解决方案


在您最初的问题中,您将访问模式定义为

给我当前用户尚未解决的所有任务

在稍后的评论中,您澄清了访问模式是

应该向求解器显示他们尚未解决的任务。

这是一种略有不同的访问模式。

这是获取用户尚未解决的任务的一种方法。

在此处输入图像描述

在这个数据模型中,我选择将用户和任务建模为单独的项目。任务的 ID 在数字上增加。每个用户项应该从lastSolved属性设置为 1 开始。每次为用户获取新任务时,您都会获取 TASK#{last_solved+1} 并将lastSolved属性增加 1。

您可能可以通过使用时间戳而不是数字来采取类似的方法......任何可排序的东西,真的。


推荐阅读