我正在使用eclipse通过java在simpleDB中放置和获取项目。我插入了大约1000个项目。然后,我进行了查询以获取域中的项目数,但它返回100。
我也在eclipse中使用aws explorer知道插入的项目数量,我只找到了100个项目。如果我尝试插入更多项目,我没有收到任何错误消息,但没有插入。我认为在一个域中没有固定限制(100个项目)。
任何人都可以帮助我知道是什么原因吗?我如何插入100多件物品?
答案 0 :(得分:2)
问题是选择不是插入。
简单的数据库查询是专门设计的,当结果太大或传输时间过长时,它只返回部分选择结果。
检查你的SelectResult,在它上面调用getNextToken,如果它不为null,你还有更多选择。要继续,请执行另一次选择,这次使用上次的令牌。
您需要循环,直到下一个标记变为空。
答案 1 :(得分:1)
正如Peter Pei Guo已经解释过的那样,你必须在回复中寻找Next标记。 以下是我用于查询SimpleDB域的示例代码。
public List<Item> getItems(){
AmazonSimpleDBClient client = new AmazonSimpleDBClient(...);
List<Item> items = new ArrayList<>();
String nextToken = null;
do {
final SelectRequest request = new SelectRequest();
request.setSelectExpression("MY SELECT QUERY");
// SimpleDB can paginate the result. For paginated result NextToken value will be not null
request.setNextToken(nextToken);
nextToken = null;
SelectResult result = client.select(request);
if (result != null) {
nextToken = (result.getNextToken() != null) ? result.getNextToken() : null;
items.addAll(result.getItems());
}
} while (nextToken != null);
return items;
}