这个让我完全不知所措。
上下文:我在CosmosDB上运行存储过程,如果有多个“页面”数据(其中至少会有少量数据),它会返回结果集和连续令牌。我的收藏中总共有65,000条记录。对于最后一个“页面”,延续令牌应该(并且确实)从CosmosDB返回NULL,表示已经返回了我的整个集合。
我的问题: 当我将我的CosmosDB集合的RU设置为最小值(400)时,数据集会很好,连续下一页的标记也会很好,而且一切都很好。一旦我提高了我的RU(为了加快查询执行速度),延续令牌就会在前几个“页面”中完成,但在整个数据集的中途突然返回NULL。
这是我的存储过程:
function count(continuationToken) {
var filterQuery = 'select c.id from c where c.Type = 0';
var collection = getContext().getCollection();
var maxResult = 900000;
var result = [];
tryQuery(continuationToken);
function tryQuery(nextContinuationToken) {
var responseOptions = { continuation: nextContinuationToken, pageSize: maxResult };
if (result.length >= maxResult || !query(responseOptions)) {
setBody(nextContinuationToken);
}
}
function query(responseOptions) {
return collection.queryDocuments(collection.getSelfLink(), filterQuery, responseOptions, onReadDocuments);
}
function onReadDocuments(err, docFeed, responseOptions) {
if (err) {
throw 'Error while reading document: ' + err;
}
result.push(docFeed);
if (responseOptions.continuation) {
tryQuery(responseOptions.continuation);
} else {
setBody(null);
}
}
function setBody(continuationToken) {
var body = { records: result, continuationToken: continuationToken };
getContext().getResponse().setBody(body);
}
}
有没有人对这里可能出现的问题有任何想法?对我来说,RUs应该对从CosmosDB集合返回的数据量产生影响是没有意义的。
非常感谢任何帮助,谢谢!