我有一个表格,其索引由以下键组成:
Partition Key: channel
Sort Key: username
在我的应用中,我需要提取未设置用户名的记录。我很好奇这是否可行(没有过滤器)以及语法应该是什么样子。我使用Go SDK,但这可能不相关。这是param结构的一个例子:
{
ExpressionAttributeValues: {
:v_channel: {
S: "redirects"
},
:v_username: {
NULL: true
}
},
IndexName: "channel-username-index",
KeyConditionExpression: "channel = :v_channel AND username = :v_username",
TableName: "messages"
}
这当然失败了。错误:
query错误:ValidationException:一个或多个参数值无效:条件参数类型与模式类型不匹配
我还没有找到正确语法的例子,我发现一个帖子说这根本不可能。另一种方法是拉动所有内容并过滤(可能在DynamoDB中,但绝对在代码中)。
顺便说一句,这确实有效:{
ExpressionAttributeValues: {
:v_channel: {
S: "redirects"
}
},
FilterExpression: "attribute_not_exists(username)",
KeyConditionExpression: "channel = :v_channel",
TableName: "feedback-messages"
}
感谢您的帮助!