Go DynamoDb SDK不完全扫描

Go DynamoDb SDK不完全扫描,go,amazon-dynamodb,aws-sdk,aws-sdk-go,Go,Amazon Dynamodb,Aws Sdk,Aws Sdk Go,我正在运行一个使用 在mygo.mod中: github.com/aws/aws-sdk-go v1.30.16 我正在尝试使用此库在表中运行: sess,err:=session.NewSession(&aws.Config){ 地区:aws.String(“us-west-2”), }) 如果出错!=零{ 返回零,错误 } //创建DynamoDB客户端 svc:=发电机B.新(sess) //剪断 predatesExpirationHorizon:=expression.Nam

我正在运行一个使用

在my
go.mod
中:

    github.com/aws/aws-sdk-go v1.30.16
我正在尝试使用此库在表中运行:

sess,err:=session.NewSession(&aws.Config){
地区:aws.String(“us-west-2”),
})
如果出错!=零{
返回零,错误
}
//创建DynamoDB客户端
svc:=发电机B.新(sess)
//剪断
predatesExpirationHorizon:=expression.Name(RequestSchema.TimeStamp).BeginsWith(“2020-04-27T09”)
projectionExpr:=expression.NamesList(
expression.Name(RequestSchema.PrimaryKey),
expression.Name(RequestSchema.SortKey),
expression.Name(RequestSchema.TimeStamp),
expression.Name(RequestSchema.State),
)
expr,err:=expression.NewBuilder()。
带过滤器(日期前旋转地平线)。
WithProjection(projectionExpr.Build())
//剪断
参数:=&dynamodb.scanport{
expressionAttribute名称:expr.Names(),
expressionAttributeValue:expr.Values(),
FilterExpression:expr.Filter(),
ProjectionExpression:expr.Projection(),
TableName:aws.String(RequestSchema.TableName),
}
res,err:=svc.Scan(参数)
fmt.Printf(“结果%v,共%v”、*res.Count、*res.ScannedCount)
这将返回我表格中计数为8010的两个项目,
LastEvaluatedKey
为空

但是,当我尝试从cli复制时,我从8276中返回了3项(其中2项相同)

aws——美国西部地区-2发电机B扫描\
--表名MyTable\
--投影表达式“#1、#2、#0、#3”\
--筛选器表达式“以(#0,:0)开头”\
--表达式属性值“{”:0:{”S:“2020-04-27T09”}”\
--表达式属性名称{“#0”:“createdAt”,“#1”:“PK”,“#2”:“SK”,“#3”:“state”}
我用调试器深入到库中,可以看到它正在运行一个http请求,其正文为:

{"ExpressionAttributeNames":{"#0":"createdAt","#1":"PK","#2":"SK","#3":"state"},
"ExpressionAttributeValues":{":0":{"S":"2020-04-27T09"}},
"FilterExpression":"begins_with (#0, :0)",
"ProjectionExpression":"#1, #2, #0, #3",
"TableName":"MyTable"}
这感觉极不可能,所以我假设我做错了什么

当我使用AWS控制台时,很明显有3个匹配项

我看过一些东西:

  • 我已经仔细检查了我的区域是否正确,并且使用了相同的凭据
  • 我知道扫描最终是一致的,但这些行已经好几天没有写入了
  • 我尝试过aws go sdk的其他版本
  • 我正在同一命名空间中查询同一个表