查询不是 DynamoDb 索引的参数

表名:人


身份证 | 姓名 | 年龄 | 地点


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...

                    },

                },


慕哥9229398
浏览 187回答 1
1回答

catspeake

DynamoDB 是一个基于 NoSQL 的系统,因此如果不进行表扫描,您将无法根据非索引字段的条件检索所有记录。表扫描将导致 DynamoDB 遍历表中的每条记录,对于大表来说,这在时间(速度慢)或金钱(预置读取 IOPS)方面都非常昂贵。使用过滤器是正确的方法,如果您从查询切换到扫描,它将允许操作完成。查询必须始终指定哈希键。不过有一句警告:如果您计划对在前端公开的不仅仅是几个(少于 100 个)项目的表使用扫描操作,您会对结果感到失望。如果这是响应时间无关紧要的某种类型的 cron 作业或后端报告任务,这是一种可接受的方法,但请注意不要耗尽所有 IOPS 并影响前端应用程序。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go