我正在尝试使用表达式生成器按多个条件过滤 DynamoDb 扫描。根据这个博客文章,尝试在构建器中添加另一个条件将覆盖先前的条件。必须有某种方法来添加另一个条件,但我还没有找到一种方法来做到这一点。
这行不通
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"),
}
我已经能够在不使用表达式构建器的情况下完成此任务,但我更喜欢使用表达式构建器。我如何向该过滤器添加另一个条件?
您可以尝试添加多个条件And
, Or
and Not
方法来自ConditionBuilder
结构。例子:
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)
}
文档.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)