我正在嘗試使用表達式生成器按多個條件過濾 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 關注
- 111 瀏覽
添加回答
舉報
0/150
提交
取消