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
相关产品推荐
相关产品推荐

