Я пытаюсь отфильтровать сканирование 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, но я бы предпочел использовать построитель выражений. Как я могу добавить другое условие к этому фильтру?