表名:人
身份证 | 姓名 | 年龄 | 地点
id_1 | 一个 | 23 | 新西兰
id_2 | 乙 | 12 | 印度
id_3 | C | 26 | 新加坡
id_4 | D | 30 | 火鸡
键:id -> hash 和 age->range
问题 1
我正在尝试执行一个查询:“从年龄 > 25 岁的人中选择 *”我可以让它工作查询,例如“从 id = id_1 和年龄 > 25 岁的人中选择年龄”,这不是我需要的,只是需要选择所有值。
如果我不需要年龄作为范围索引,我应该如何修改我的查询参数以只返回匹配条件的记录列表:年龄 > 25?
问题2
当第 23 行或第 24-41 行被注释时,AWS 会抛出错误。:查询错误:ValidationException:必须在请求中指定 KeyConditions 或 KeyConditionExpression 参数。状态代码:400,请求 ID:[]
是否需要 KeyConditions/KeyConditionsExpressions 参数?这是否意味着我无法在不属于索引的参数上查询表?
func queryDynamo() {
log.Println("Enter queryDynamo")
svc := dynamodb.New(nil)
params := &dynamodb.QueryInput{
TableName: aws.String("people"), // Required
Limit: aws.Long(3),
// IndexName: aws.String("localSecondaryIndex"),
ExpressionAttributeValues: map[string]*dynamodb.AttributeValue{
":v_age": { // Required
N: aws.String("25"),
},
":v_ID": {
S: aws.String("NULL"),
},
},
FilterExpression: aws.String("age >= :v_age"),
// KeyConditionExpression: aws.String("id = :v_ID and age >= :v_age"),
KeyConditions: map[string]*dynamodb.Condition{
"age": { // Required
ComparisonOperator: aws.String("GT"), // Required
AttributeValueList: []*dynamodb.AttributeValue{
{ // Required
N: aws.String("25"),
},
// More values...
},
},
catspeake
相关分类