首页 >后端开发 >Golang >如何在AWS SDK for Go DynamoDB中实现多条件过滤?

如何在AWS SDK for Go DynamoDB中实现多条件过滤?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-10-29 11:17:021052浏览

How to Implement Multi-Condition Filtering in AWS SDK for Go DynamoDB?

AWS SDK for Go DynamoDb 的多条件过滤,并向 FilterExpression 添加多个条件

问题:
用户需要一种方法使用表达式生成器中的多个条件过滤 DynamoDB 扫描。初始实现会覆盖之前的条件,限制了多条件过滤功能。

解决方案:
使用 ConditionBuilder 结构体,开发者可以通过 And、Or 和 And 添加多个条件不是方法。示例如下:

<code class="go">package main

import (
    "fmt"

    "github.com/aws/aws-sdk-go/aws"
    "github.com/aws/aws-sdk-go/aws/session"
    "github.com/aws/aws-sdk-go/service/dynamodb"
    "github.com/aws/aws-sdk-go/service/dynamodb/expression"
)

func main() {
    sess := session.Must(session.NewSessionWithOptions(
        session.Options{
            SharedConfigState: session.SharedConfigEnable,
        },
    ))

    svc := dynamodb.New(sess, &aws.Config{
        Region: aws.String("us-west-1"),
    })

    cond1 := expression.Name("foo").Equal(expression.Value(5))
    cond2 := expression.Name("bar").Equal(expression.Value(6))
    expr, err := expression.NewBuilder().
        WithCondition(cond1.And(cond2)).
        Build()
    if err != nil {
        fmt.Println(err)
    }

    input := &dynamodb.ScanInput{
        ExpressionAttributeNames:  expr.Names(),
        ExpressionAttributeValues: expr.Values(),
        FilterExpression:          expr.Filter(),
        TableName:                 aws.String("Music"),
    }

    _, err = svc.Scan(input)
    if err != nil {
        fmt.Println(err)
    }
}</code>

文档:

有关使用 ExpressionBuilder 进行多条件过滤的更多信息,可以参考官方文档:[https:// pkg.go.dev/github.com/aws/aws-sdk-go/aws/session/credentials#Values](https://pkg.go.dev/github.com/aws/aws-sdk-go/service /dynamodb/表达式#和)

以上是如何在AWS SDK for Go DynamoDB中实现多条件过滤?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn