仅用DynamoDbClient.BatchGetItem能否查询postId=100的数据?还是只能用Query?
关于DynamoDB查询postId=100数据的操作说明
针对你的问题,两种操作都可以实现需求,但适用场景有明显区别:
Query操作(更推荐):
假设你的ForumPosts表主键是postId(分区键)+commentId(排序键),Query操作就是专门用来查询同一分区键下所有/部分数据的工具。你只需要指定KeyConditionExpression为postId = :postIdVal,将参数值设为POST::100,就能直接一次性获取该postId下的5条评论数据,操作简单高效,完全匹配你的需求场景。BatchGetItem操作(可行但繁琐):
这种方式也能拿到目标数据,但前提是你必须提前知道这5条数据的完整主键(即postId和对应的commentId)。你需要在请求中逐一列出每个项的完整主键条目,比如:[ { "postId": "POST::100", "commentId": "COMMENT:1" }, { "postId": "POST::100", "commentId": "COMMENT:2" }, { "postId": "POST::100", "commentId": "COMMENT:3" }, { "postId": "POST::100", "commentId": "COMMENT:4" }, { "postId": "POST::100", "commentId": "COMMENT:5" } ]然后通过
BatchGetItem请求这些项。但这种方式需要预先掌握所有目标项的完整主键信息,远不如Query操作直接便捷,一般不会用它来做这种分区内的批量查询。
内容的提问来源于stack exchange,提问作者Alex Agranov
相关产品推荐
相关产品推荐

