无法使用expression.NewBuilder()正确过滤

I'm using the following Go code to get only ONE registry in my dynamoDB table, but instead, it's returning all of them:

  condition1 := expression.Name("id").Equal(expression.Value(id))
  condition2 := expression.Name("apiKey").Equal(expression.Value(apiKey))
  projection := expression.NamesList(
    expression.Name("data"),
  )

  expr, err := expression.NewBuilder().
    WithFilter(condition1).
    WithFilter(condition2).
    WithProjection(projection).
    Build()
  if err != nil {
    return "", err
  }

  req := svc.ScanRequest(&dynamodb.ScanInput{
    TableName:                 aws.String(awsEnv.Dynamo_Table),
    ExpressionAttributeNames:  expr.Names(),
    ExpressionAttributeValues: expr.Values(),
    FilterExpression:          expr.Filter(),
    ProjectionExpression:      expr.Projection(),
  })

  result, err := req.Send()
  if err != nil {
     // TODO
  }
  fmt.Println(result.Items)

This should contain only one registry, since there is only one registry that satisfies the id filter condition, but instead, I'm getting ALL registries.

Am I missing something?

The ScanInput exist attribute Setlimit (receive int64), you did not declare it:

  req := svc.ScanRequest(&dynamodb.ScanInput{
      Setlimit:                  1,
      TableName:                 aws.String(awsEnv.Dynamo_Table),
      ExpressionAttributeNames:  expr.Names(),
      ExpressionAttributeValues: expr.Values(),
      FilterExpression:          expr.Filter(),
      ProjectionExpression:      expr.Projection(),
  })

read more: https://docs.aws.amazon.com/sdk-for-go/api/service/dynamodb/#ScanInput.SetLimit