扫描计数返回显着少于dynamodb表的数字

nig*_*aph 3 java amazon-web-services amazon-dynamodb

我正在运行一个示例java程序来查询dynamodb表,该表有大约90000个项目但是当我从java获得扫描计数时它只显示了1994个项目

 ScanRequest scanRequest = new ScanRequest().withTableName(tableName);
 ScanResult result = client.scan(scanRequest);
 System.out.println("#items:" + result.getScannedCount());
Run Code Online (Sandbox Code Playgroud)

该程序输出#items:1994但来自amazon aws控制台的详细信息显示:

项目数*:89249

任何的想法?谢谢

nig*_*aph 6

扫描或查询dynamodb只返回最多1MB的数据.计数是适合1MB的退货项目数.为了获得整个表,您应该积极地扫描数据库,直到值LastEvaluatedKey为空


小智 5

为书本对象设置正确的哈希键值,然后使用DynamoDBMapper获取计数。

DynamoDBQueryExpression<Book> queryExpression = new DynamoDBQueryExpression<Book>()
                .withHashKeyValues(book);
dynamoDbMapper.count(Book.class, queryExpression);
Run Code Online (Sandbox Code Playgroud)