You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Golang操作DynamoDB:Scan/Query仅返回最后一条数据求助

解决建议

先从最可能的核心问题排查:

  • 检查数据写入逻辑,确认主键是否重复
    DynamoDB的主键(分区键+排序键)是唯一约束,如果你每次写入数据时都用了相同的主键值,新数据会直接覆盖旧数据,最终表里就只剩最后一次写入的那条。直接登录DynamoDB控制台查看Items表的实际数据量——如果控制台里也只有一条,那问题肯定出在写入环节,和查询代码无关。

  • 验证Scan/Query的结果处理逻辑
    你当前的代码只执行了一次Scan,虽然设置了Limit:1000,但如果表中存在分页标记LastEvaluatedKey,需要循环调用Scan直到该标记为空才能获取全部数据。不过你说只返回一条,大概率是表内数据本身就只有一条,但可以加个简单验证确认:

    // 打印返回的条目数量
    fmt.Printf("返回条目数: %d\n", len(items.Items))
    // 检查是否存在未返回的分页数据
    if items.LastEvaluatedKey != nil {
        fmt.Println("存在未返回的数据,需继续执行扫描")
    }
    
  • 确认Query操作的条件是否合理
    如果用Query时,你的KeyConditionExpression条件过于严格,只匹配到了单条数据,也会出现这种情况。比如Query指定了某个固定的分区键值,而该分区键下仅存在一条数据,结果自然只有一条。

优先检查表内实际数据,这是最快定位问题的方式。

内容的提问来源于stack exchange,提问作者kotyara85

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 20:00:54