亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

查詢不是 DynamoDb 索引的參數

查詢不是 DynamoDb 索引的參數

Go
慕哥9229398 2021-10-25 16:49:55
表名:人身份證 | 姓名 | 年齡 | 地點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...                    },                },
查看完整描述

1 回答

?
catspeake

TA貢獻1111條經驗 獲得超0個贊

DynamoDB 是一個基于 NoSQL 的系統,因此如果不進行表掃描,您將無法根據非索引字段的條件檢索所有記錄。

表掃描將導致 DynamoDB 遍歷表中的每條記錄,對于大表來說,這在時間(速度慢)或金錢(預置讀取 IOPS)方面都非常昂貴。

使用過濾器是正確的方法,如果您從查詢切換到掃描,它將允許操作完成。查詢必須始終指定哈希鍵。

不過有一句警告:如果您計劃對在前端公開的不僅僅是幾個(少于 100 個)項目的表使用掃描操作,您會對結果感到失望。如果這是響應時間無關緊要的某種類型的 cron 作業或后端報告任務,這是一種可接受的方法,但請注意不要耗盡所有 IOPS 并影響前端應用程序。


查看完整回答
反對 回復 2021-10-25
  • 1 回答
  • 0 關注
  • 201 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號