我正在尝试使用表达式生成器按多种条件过滤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"), }
我已经能够在不使用表达式buidler的情况下完成此操作,但是我更喜欢使用表达式构建器。如何向该过滤器添加其他条件?
你可以尝试添加多个条件And,Or并Not从方法ConditionBuilder结构。例:
And
Or
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) }
文件资料。