gpt4 book ai didi

amazon-web-services - AWS,dynamodb 以条件 gsi 启动

转载 作者:行者123 更新时间:2023-12-04 00:55:57 26 4
gpt4 key购买 nike

我需要像这样执行查询:
select * from table where sampling_date like "2020-05-%"
为此,我呼吁

 db.query({
TableName: "Tubes",
Select: "ALL_ATTRIBUTES",
IndexName: "sampling_date_idx",
KeyConditionExpression: " sampling_date > :sampling_date ",
ExpressionAttributeValues:{ ':sampling_date': {'S': '2020-05-'}}
}, function(error: AWSError, data: QueryOutput){
console.log(error, data);
})
我收到此错误消息:
 {"errorType":"Error","errorMessage":"{\"message\":\"Query key condition not supported\",\"code\":\"ValidationException\",
我的表:
this.tubes = new dynamodb.Table(this, "tubes", {
tableName: "Tubes",
billingMode: dynamodb.BillingMode.PAY_PER_REQUEST,
partitionKey: {
name: "id",
type: dynamodb.AttributeType.STRING
},
pointInTimeRecovery: true,
removalPolicy: cdk.RemovalPolicy.RETAIN
});
this.tubes.addGlobalSecondaryIndex({
indexName: "sampling_date_idx",
sortKey: {
name: 'sampling_date_srt',
type: AttributeType.STRING
},
partitionKey: {
name: "sampling_date",
type: AttributeType.STRING,
},
})

最佳答案

我认为您当前的代码中有两个问题-

  • 在 KeyConditionExpression 中,单个分区键值必须存在相等条件。在您的情况下,它必须包括“sampling_date = :sampling_date”。

  • 请阅读“KeyConditionExpression”部分 -
    https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Query.html
    简而言之,您只能对分区键执行相等测试。
  • 我不确定您使用哪种语言。我怀疑您的 ExpressionAttributeValues 语法不正确。

  • AWS 文档中给出的语法是 -
    "ExpressionAttributeValues": { 
    "string" : {
    "B": blob,
    "BOOL": boolean,
    "BS": [ blob ],
    "L": [
    "AttributeValue"
    ],
    "M": {
    "string" : "AttributeValue"
    },
    "N": "string",
    "NS": [ "string" ],
    "NULL": boolean,
    "S": "string",
    "SS": [ "string" ]
    }
    }
    在你的情况下,它可能是这样的 -
    "ExpressionAttributeValues": {
    ":sampling_date": {"S": "2020-05-01"}
    }
    我的经验是在 C# 中,它可能类似于 -
    ExpressionAttributeValues = new Dictionary<string, AttributeValue>()
    {
    { ":sampling_date", new AttributeValue{S = "2005-05-01"} }
    }
    要解决您的问题,您可能需要使用另一个属性作为索引的分区键。 sample_date 只能用作排序键。

    关于amazon-web-services - AWS,dynamodb 以条件 gsi 启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62575476/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com