我们可以同时查询和删除 Amazon DynamoDB 中的项目吗?

kar*_*tik 3 amazon-web-services amazon-dynamodb dynamodb-queries

我们想要运行一个查询,其中返回的所有项目都将被删除。更明确地说,我们真正想要做的是运行一个查询,其中如果某个项目与条件匹配,则应将其包含在响应中,并从 Amazon DynamoDB 中删除。然后查询应该选择第二个选项。

因此,在查询响应后,数据库中将不存在此类订单,因为它们已被即时删除。


包含 5 个项目(项目示例图片如下)的示例工作流程如下所示 -

在此输入图像描述


  • 查询运行检查 if From= Kartik
  • 查询出现在第一项 ( 1000) 上并发现它与条件匹配。
  • 它捕获该项目,并将其从表中删除。现在,只有响应包含此项,而不是表。
  • 查询移动到更多项目 ( 1001& 1002) 并发现它们不符合条件,因此它甚至不会捕获它们,也不会删除它们。
  • 查询找到1003符合条件的第 4 项 ( )。因此,它在响应中捕获它,并将其从表中删除。
  • 与上述第 5 项 ( 1004) 相同。

现在,查询完成,并返回仅包含第 1、第 4 和第 5 项的响应。现在,如果我去 DynamoDB 中查找它们,它将返回错误,因为它们已从那里删除。


所以,这就是我想要的流程。这有可能做到吗?

任何帮助表示赞赏!谢谢!

red*_* la 6

您可以对某个项目执行deleteItem操作,并通过在请求参数中设置: “ReturnValues”:“ALL_OLD”来获取其旧值(删除前)。

要删除项目,您必须指定其主键。所以你只能删除一项。(在你的情况下,From似乎不是主键)

删除项目文档

您可以在batchWriteItem 操作中执行删除以一次处理多个项目。但请注意,batchWriteItem 不是原子的,即某些删除操作可能会失败,您可以在batchWriteItem 的响应中找到它们。

批次项目文档