Amazon dynamodb 使用FilterExpression(contains)的aws sdk dynamodb扫描操作将生成空项
我正在尝试使用contains FilterExpression从AWS Dynamo DB scan获取数据。我正在使用以下参数,但接收空响应作为: {“Items”:[],“Count”:0,“ScannedCount”:792,“LastEvaluatedKey”:{“ID”:“b123456789”} 我想根据数组中的字符串进行过滤,例如:orange from fruits:['orange','apple','banana'] 扫描操作参数: 参数={ TableName:table, 过滤器表达式:“包含(水果,:L)”, 表达式属性值:{:L:{S:“橙色”} } 但是,当我使用AWS CLI的as命令时,我将以以下格式获取数据: {“项目”:[{“水果”:{“L”:[{“S”:“橙色”}]}},{}]}Amazon dynamodb 使用FilterExpression(contains)的aws sdk dynamodb扫描操作将生成空项,amazon-dynamodb,aws-sdk-nodejs,amazon-dynamodb-streams,Amazon Dynamodb,Aws Sdk Nodejs,Amazon Dynamodb Streams,我正在尝试使用contains FilterExpression从AWS Dynamo DB scan获取数据。我正在使用以下参数,但接收空响应作为: {“Items”:[],“Count”:0,“ScannedCount”:792,“LastEvaluatedKey”:{“ID”:“b123456789”} 我想根据数组中的字符串进行过滤,例如:orange from fruits:['orange','apple','banana'] 扫描操作参数: 参数={ TableName:table
您能告诉我我使用的参数有什么问题吗。要了解这里发生了什么,您需要了解DynamoDB如何过滤数据和分页结果。它的发生顺序如下:
query
和scan
操作一次最多返回1MB的数据。超过1MB的任何数据都将被分页。如果DynamoDB在响应中返回LastEvaluatedKey
元素,您就知道结果正在分页
过滤器在1MB限制后应用。这是经常让人措手不及的关键步骤。在您的情况下,会发生以下情况:
scan
操作,从表中读取1MB的数据LastEvaluatedKey
元素的剩余项,这表示有更多数据要搜索换句话说,您的筛选器没有应用于整个表。它一次应用于1MB的表。为了获得您要查找的结果,您需要重复执行
扫描
操作,直到到达最后一页“在表中。你好,赛斯,但我没有收到1MB系列中的任何项目。我不确定我是否理解您面临的问题。你最初的问题说你得到的结果是空的,但后来说你得到的结果格式不同。你能澄清你面临的问题吗?查看您正在执行的代码或CLI命令会很有帮助。