Amazon dynamodb DynamoDB是否支持关系数据库之类的更新操作

Amazon dynamodb DynamoDB是否支持关系数据库之类的更新操作,amazon-dynamodb,operation,Amazon Dynamodb,Operation,我知道我们可以通过两个操作进行更新,首先通过查询数据库获取主键,然后通过put操作进行更新。但是DynamoDB是否支持像关系数据库(比如mysql)那样的一次操作更新呢?因为两个操作在网络传输中会花费更多的时间 我的情况如下: 我有一个表a,其中包含字段ID、名称、位置、值 名称+位置可以唯一地定义一行。 所以现在我想在名称和位置满足某些条件时更新字段“Value”,但我不知道ID。因此,如果我使用mysql,那么我可以通过“update A set Value=XXX,其中Name=“abc

我知道我们可以通过两个操作进行更新,首先通过查询数据库获取主键,然后通过put操作进行更新。但是DynamoDB是否支持像关系数据库(比如mysql)那样的一次操作更新呢?因为两个操作在网络传输中会花费更多的时间

我的情况如下: 我有一个表a,其中包含字段ID、名称、位置、值

名称+位置可以唯一地定义一行。 所以现在我想在名称和位置满足某些条件时更新字段“Value”,但我不知道ID。因此,如果我使用mysql,那么我可以通过“update A set Value=XXX,其中Name=“abc”和Location=“123”来更新它。 但是当我使用dynamoDB时,我必须首先获得主键ID。 然后使用该键更新该项。所以我的问题是,DynamoDB是否也支持与mysql类似的更新操作。
谢谢

如果我错了,请更正我的错误,但更新项将仅使用1个操作。它将获取哈希键值,如果存在,请更新它。否则将创建新项(最多1KB项)

以下是供参考的链接:


希望这对你有所帮助,你不需要先得到主键。如果你知道主键,你不需要得到任何东西,你可以简单地使用调用来更新你的物品


如果仍然不清楚,请编辑您的问题,并添加一些代码示例,说明您正在尝试执行的操作。

陈击中了它的鼻子。Joey,您描述的情况(后跟一个Put)相当于2个mysql函数

   SELECT * 
   FROM TABLE
   WHERE key = x

   UPDATE TABLE 
   SET var = param
   WHERE key = x
您是否看到Select/PutItem如何不属于更新过程的一部分?只要您有密钥,就不需要执行查询。我假设您在PutItem请求之前执行GetItem,因为PutItem将替换整个项/行(即删除Put请求中未指定的所有属性)

因此,如果原始项看起来像:

然后执行一个PutItem:

最后一项看起来像:

如果执行UpdateItem代替PutItem,则会得到:

这里有一个将UpdateItem与Java一起使用的链接。还有使用.net和php的示例


我的情况是:我有一个表a,其中包含字段ID、名称、位置和值。名称+位置可以唯一地定义一行。所以现在我想在名称和位置满足某些条件时更新字段“Value”,但我不知道ID。因此,如果我使用mysql,那么我可以通过“update A set Value=XXX,其中Name=“abc”和Location=“123”来更新它。但是当我使用dynamoDB时,我必须首先获得主键ID,然后使用该键来更新项目。所以我的问题是,DynamoDB是否也支持与mysql类似的更新操作。谢谢DynamoDB不支持您描述的功能,但我建议您仔细阅读文档/开发人员指南。据我所知,您甚至不需要ID,也可以将ID作为属性。DynamoDB不支持您所描述的功能,但我建议您仔细阅读文档/开发人员指南,特别是关于散列键和范围键的内容。解决问题的方法是数据模式。由于名称和位置是唯一的,所以可以设置hash key=name和range key=location(反之亦然,选择最多样化的hash key),这样就可以一步更新行。您甚至不需要ID,也可以将ID作为属性。这是链接