我正在MVC中创建应用程序并使用Amazon云服务进行后端。我需要数据库中的数据,所以我使用像这样的查询 -
SelectResponse response = simpleDBClient.Select(new SelectRequest()
{
SelectExpression = "select * from survey1 limit 2400"
});
现在正常工作并返回2400记录。现在我想在这些记录上应用搜索所以我必须使用where子句,但是当我使用where子句时,它在任何有效条件下只返回10条记录。
请帮助我任何帮助都会得到赞赏。
答案 0 :(得分:2)
您可以将limit
与where
子句一起使用。有关详细信息,请参阅Syntax
Select
-
Query
select output_list from domain_name [where expression] [sort_instructions] [limit limit]
output_list
可以是:,itemName()
,count(),属性列表
domain_name是您要搜索domain
的{{1}}。
表达式是项目的items
。您可以使用选择表达式,例如=,< =,<,> =,like,not like,between,is null,not null etc。
match expression
按单个属性按升序或降序对结果进行排序。
sort_instructions
是要返回的最大结果数(默认值:100,最多2500)。
请注意 -
响应的总大小不能超过1 MB。 Amazon SimpleDB 自动调整每页返回的项目数以强制执行 这个限制。例如,即使您要求检索2500项,但是 每个项目的大小为10 KB,系统返回100个项目 以及适当的下一个标记,以便您可以获得下一页结果。
注意:运行时间超过5秒的操作会返回超时 错误响应或部分或空结果集。部分和空洞 结果集包含一个NextToken值,允许您继续 从中断的地方开始的操作。
答案 1 :(得分:2)
SimpleDB一次只能检索1MB的数据,SimpleDB将nextToken作为响应,表示有更多的数据需要检索。
以下是Java中的操作方法。
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;
}