我正在尝试使用表达式生成器按多个条件过滤 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"),}我已经能够在不使用表达式生成器的情况下完成此操作,但我更愿意使用表达式生成器。我如何向该过滤器添加另一个条件?
1 回答
慕少森
TA贡献2019条经验 获得超9个赞
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)
}
- 1 回答
- 0 关注
- 73 浏览
添加回答
举报
0/150
提交
取消