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

如何在DynamoDB中查询单个主键对应的所有排序键?

解决DynamoDB查询单个主键下所有排序键的问题

要查询单个分区键(PK)对应的所有排序键(SK)条目,正确的做法是仅在KeyConditionExpression中指定PK的相等条件,不需要额外添加SK的条件,DynamoDB的Query操作默认会返回该分区键下的所有排序键数据(前提是你的表是复合主键:PK为分区键,SK为排序键)。

正确代码示例

const command = new QueryCommand({
    TableName: "MyTable",
    KeyConditionExpression: 'PK = :pk',
    ExpressionAttributeValues: {
        ":pk": tempPK,
    },
});

你的错误原因分析

  1. 第一种尝试的语法错误
    你写的KeyConditionExpression: 'PK = :pk,少了结尾的单引号,属于字符串语法错误,导致参数解析失败,并非DynamoDB要求必须同时指定PK和SK。

  2. 第二种尝试的运算符错误
    KeyConditionExpression只允许使用特定的比较运算符(=、<、>、<=、>=、BETWEEN、BEGINS_WITH),attribute_exists这类函数只能用在FilterExpression里,不能放在键条件表达式中。

  3. 第三种尝试的类型不匹配
    用SK > :minSortKey且:minSortKey设为空字符串,若你的SK字段类型不是字符串(比如数字、二进制等),就会出现类型不匹配的错误,导致查询不被支持。

补充说明

如果你的表确实是复合主键结构,使用上面的正确代码就能获取该PK下的所有SK数据,无需额外条件。如果还是有问题,可以检查:

  • tempPK的类型是否和表中PK字段的类型完全一致(比如表中PK是字符串,tempPK不能是数字)
  • 表的主键定义是否正确(确认SK是排序键)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 04:05:01