gpt4 book ai didi

amazon-web-services - 适用于 Go 的 AWS 开发工具包 - DynamoDb - 向 FilterExpression 添加多个条件

转载 作者:IT王子 更新时间:2023-10-29 02:08:29 27 4
gpt4 key购买 nike

我正在尝试使用表达式构建器按多个条件过滤 DynamoDb 扫描。根据这个blog post , 尝试在构建器中添加另一个条件将覆盖以前的条件。必须有某种方法可以添加另一个条件,但我一直无法找到一种方法来做到这一点。

这行不通

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

这是一个使用单个过滤器的工作示例

filt := expression.Name("Artist").Equal(expression.Value("No One You Know"))
proj := expression.NamesList(
expression.Name("SongTitle"),
expression.Name("AlbumTitle"),
)
expr, err := expression.NewBuilder().
WithFilter(filt).
WithProjection(proj).
Build()
if err != nil {
fmt.Println(err)
}

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

我已经能够在不使用表达式构建器的情况下完成此操作,但我更愿意使用表达式构建器。我如何向该过滤器添加另一个条件?

最佳答案

您可以尝试使用 ConditionBuilder 结构中的 AndOrNot 方法添加多个条件。示例:

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)
}

Documentation .

关于amazon-web-services - 适用于 Go 的 AWS 开发工具包 - DynamoDb - 向 FilterExpression 添加多个条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53073212/

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