问题:
用户需要一种方法使用表达式生成器中的多个条件过滤 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中文网其他相关文章!