CodeRoadMap
首页路线题库资源库文章社区
CodeRoadMap

程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。

由 程序员柏风 独立维护 · 关于作者

学习

  • 路线图
  • 课程
  • 面试题
  • 文章
  • 我

更多

  • 资源
  • 社区
  • 关于作者
  • 内容说明

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
DynamoDB 入门/课时/CRUD 与条件写
RawBlame
课时目录12 节

DynamoDB 入门

  1. 01DynamoDB 是什么
  2. 02数据模型
  3. 03分区键与排序键
  4. 04CRUD 与条件写
  5. 05GSI 与 LSI
  6. 06Query 与 Scan
  7. 07DynamoDB Streams
  8. 08Spring 集成
  9. 09容量模式
  10. 10时序库对照
  11. 11DynamoDB vs MySQL
  12. 12综合练习

CRUD 与条件写

PutItem/GetItem/UpdateItem、ConditionExpression。

30 分钟

CRUD 与条件写

DynamoDB 的增删改查通过 Item 级 API 完成:PutItem、GetItem、UpdateItem、DeleteItem。语义与 MongoDB CRUD、MySQL DML 一致,但 必须提供完整主键。

学习目标

  • 掌握四类基本 Item 操作
  • 理解 UpdateItem 表达式与 ConditionExpression
  • 对比 MySQL DML 与 MongoDB 更新运算符

核心内容

Create / Replace(PutItem)

aws dynamodb put-item \
  --table-name UserProgress \
  --item '{
    "PK": {"S": "USER#u_1001"},
    "SK": {"S": "LESSON#ddb-crud"},
    "action": {"S": "view"},
    "updatedAt": {"S": "2026-03-01T10:00:00Z"}
  }'

PutItem 整项覆盖(同主键存在则替换)。MySQL 等价见 sql-essentials INSERT ... ON DUPLICATE KEY UPDATE。

Read(GetItem)

aws dynamodb get-item \
  --table-name UserProgress \
  --key '{"PK":{"S":"USER#u_1001"},"SK":{"S":"LESSON#ddb-crud"}}'

仅主键精确查找;条件过滤走 Query/Scan(ddb-query)。

Update 与条件写

client.updateItem(UpdateItemRequest.builder()
    .tableName("UserProgress")
    .key(Map.of(
        "PK", AttributeValue.builder().s("USER#u_1001").build(),
        "SK", AttributeValue.builder().s("LESSON#ddb-crud").build()))
    .updateExpression("SET #a = :action, viewCount = if_not_exists(viewCount, :zero) + :inc")
    .expressionAttributeNames(Map.of("#a", "action"))
    .expressionAttributeValues(Map.of(
        ":action", AttributeValue.builder().s("complete").build(),
        ":inc", AttributeValue.builder().n("1").build(),
        ":zero", AttributeValue.builder().n("0").build()))
    .conditionExpression("attribute_exists(PK)")  // 仅更新已存在项
    .build());

ConditionExpression 实现 乐观锁(如 version = :expected)。MongoDB 对照 mongo-crud 的 $inc / $set。

Delete(DeleteItem)

aws dynamodb delete-item \
  --table-name UserProgress \
  --key '{"PK":{"S":"USER#u_1001"},"SK":{"S":"LESSON#ddb-crud"}}'

批量删除无 SQL 式 DELETE WHERE;需 Query 后逐条 Delete 或 Streams + Lambda。

练习

  • PutItem 写入 3 条不同 SK 的进度,GetItem 验证
  • UpdateItem 用条件 viewCount < :max 限制更新
  • 写 MySQL UPDATE 完成与上方 viewCount 自增等价的语句

小结

Put/Get/Update/Delete 四 API + ConditionExpression = 安全 CRUD;无 ad-hoc UPDATE WHERE。 下一课 GSI 与 LSI。

加载本节练习…
← 上一课分区键与排序键下一课 →GSI 与 LSI