首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不支持查询关键条件

不支持查询关键条件
EN

Stack Overflow用户
提问于 2019-05-21 06:31:43
回答 1查看 157关注 0票数 0

我正在尝试让所有行都超过某个时间戳。

我也尝试过在条件中使用"GE","LE","GT“,但我得到了一个语法错误。

我得到以下DynamoDB错误:

代码语言:javascript
复制
Internal Server Error [ValidationException: Query key condition not supported
    status code: 400,

我有下面的表格

代码语言:javascript
复制
Table name  GroupsLambda3
Primary partition key   id (String)
Primary sort key    -
Point-in-time recovery  DISABLEDEnable
Encryption Type DEFAULTManage Encryption
KMS Master Key ARN  Not Applicable
Time to live attribute  DISABLEDManage TTL

然后,我在上创建了一个辅助索引

代码语言:javascript
复制
Name: unix_time-index
Status: Active
Type: GSI
Partition Key: unix_time (Number)
Sort Key: unix_time-index

最后,我的Golang代码是:

代码语言:javascript
复制
    var cond string
    cond = "unix_time <= :v_unix_time"
    var projection string
    projection = "id, num_users, salesforce_campaign, unix_time"
    input := &dynamodb.QueryInput{
        TableName:              aws.String(table),
        IndexName:              aws.String("unix_time-index"),
        KeyConditionExpression: &cond,
        ProjectionExpression:   &projection,
        ExpressionAttributeValues: map[string]*dynamodb.AttributeValue{
            ":v_unix_time": {
                N: aws.String("1558130473454419"),
            },
        },

当我执行cond = "unix_time = :v_unix_time",equals only时,代码可以工作。

我希望所有行都有一个较小的unix_timestamp。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-21 15:13:58

您应该使用表达式生成器:

代码语言:javascript
复制
// todo: please check if value should be converted to another type in your case
keyCond := expression.Key("unix_time").LessThenEqual(expression.Value("1558130473454419"))
proj := expression.NamesList(expression.Name("id"), expression.Name("num_users"), expression.Name("salesforce_campaign"), expression.Name("unix_time"))

expr, err := expression.NewBuilder().
    WithKeyCondition(keyCond).
    WithProjection(proj).
    Build()
if err != nil {
    fmt.Println(err)
}

input := &dynamodb.QueryInput{
    ExpressionAttributeValues: expr.Values(),
    KeyConditionExpression:    expr.KeyCondition(),
    ProjectionExpression:      expr.Projection(),
    TableName:                 aws.String(table),
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56228969

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档