我想使用select query从azure-cosmos DB中获取100条以上的记录。
我正在编写存储过程并使用select查询来获取记录。
这是我的存储过程 -
function getall(){
var context = getContext();
var response = context.getResponse();
var collection = context.getCollection();
var collectionLink = collection.getSelfLink();
var filterQuery = 'SELECT * FROM c';
collection.queryDocuments(collectionLink, filterQuery, {pageSize:-1 },
function(err, documents) {
response.setBody(response.getBody() + JSON.stringify(documents));
}
);
}
最初,它在数据库中处理的数据量较少。
但是,有大量数据, 存储过程抛出此异常 -
执行功能时遇到异常。例外=错误: 由于“正文”,导致的消息太大。从...返回 脚本与当前消息并使用延续令牌来调用 再次编写脚本或修改脚本。堆栈跟踪:错误:结果 消息因“身体”而过大。从脚本返回 当前消息并使用continuation token再次调用脚本或 修改你的脚本。
答案 0 :(得分:0)
文档数据库对响应页面大小施加限制。 此链接总结了其中一些限制: Azure DocumentDb Storage Limits - what exactly do they mean?
您可以使用延续令牌对数据进行分页。 Document Db sdk支持无缝读取分页数据。 https://azure.microsoft.com/en-us/blog/documentdb-paging-support-with-top-and-more-query-improvements/
答案 1 :(得分:0)
您是否使用.NET sdk来检索存储过程返回的数据?如果是这样,请利用.HasMoreResults。它会自动获取允许的大小数据结果,从而不会显示您发布的错误。循环通过它,直到没有更多的结果。
http://www.kevinkuszyk.com/2016/08/19/paging-through-query-results-in-azure-documentdb/