Stored procedures 为什么文档数据库过程在querydocument上只返回100个文档?

Stored procedures 为什么文档数据库过程在querydocument上只返回100个文档?,stored-procedures,azure-cosmosdb,Stored Procedures,Azure Cosmosdb,我在DB文件中有以下程序。它在DocumentDb脚本资源管理器中执行良好,但返回的结果是部分的。我在查询资源管理器中签入了250多个满足给定where子句的文档。但当我从脚本资源管理器运行过程时,计数(在过程中定义)总是100 以下是我的程序- function getInvoice(pageNo, numberOfRecords, member, searchText, customerGroupId,ResellerId) { var collectionReseller = getCon

我在DB文件中有以下程序。它在DocumentDb脚本资源管理器中执行良好,但返回的结果是部分的。我在查询资源管理器中签入了250多个满足给定where子句的文档。但当我从脚本资源管理器运行过程时,计数(在过程中定义)总是100

以下是我的程序-

function getInvoice(pageNo, numberOfRecords, member, searchText, customerGroupId,ResellerId) {
var collectionReseller = getContext().getCollection();
var filterquery ;
var count=0, invoiceAmountTotal=0, referalCommissionTotal=0, developerCommissionTotal=0;
var customerIdString='';
var InvoiceList = [];
var whereClause;
if (customerGroupId != "") {
filterquery = 'SELECT c.id from c where c.Type="Customer" and c.CustomerGroupID="' + customerGroupId + '"';
var isAccepted = collectionReseller.queryDocuments(
    collectionReseller.getSelfLink(), filterquery,
    function (err, documents, responseOptions) {
        var docCount = documents.length;
        documents.forEach(function (doc) {
            docCount--;
            if (docCount > 0)
                customerIdString = customerIdString + '"' + doc.id + '", '
            else
                customerIdString = customerIdString + '"' + doc.id + '" '
        })
        whereClause = 'where  r.Type="Invoice" and r.CustomerID IN (' + customerIdString + ')'

        var filterquery1 = 'SELECT * FROM root r  ';
        if (member.length > 0) {

            member.forEach(function (val, i) {
                whereClause = whereClause + ' and contains(r.' + member[i] + ',"' + searchText[i] + '")';
            });
        }
        isAccepted = collectionReseller.queryDocuments(
         collectionReseller.getSelfLink(), filterquery1 + whereClause,
         function (err, invoiceDoc) {
             var qr = filterquery1 + whereClause;
        count = invoiceDoc.length;
             invoiceDoc.forEach(function (doc) {
                 invoiceAmountTotal = parseFloat(invoiceAmountTotal) + parseFloat(doc.InvoiceAmount);
                 referalCommissionTotal = parseFloat(referalCommissionTotal) + parseFloat(doc.ReferralCommission);
                 developerCommissionTotal= parseFloat(developerCommissionTotal) + parseFloat(doc.DeveloperCommission);
                 InvoiceList.push(doc);
             });


             InvoiceList.sort(SortByID);
             InvoiceList = InvoiceList.slice(pageNo * numberOfRecords, pageNo * numberOfRecords + numberOfRecords);
             // Check the feed and if empty, set the body to 'no docs found', 
             // else take 1st element from feed
             getContext().getResponse().setBody(JSON.stringify({ InvoiceList, count, invoiceAmountTotal, referalCommissionTotal, developerCommissionTotal }));

         });
    });
}
else
{   
    whereClause = ' where r.Type = "Invoice" and r.ResellerID = "'+ ResellerId + '"';

    filterquery = 'SELECT * FROM root r ';
    if(member.length > 0) {
    member.forEach(function (val, i) {
        whereClause = whereClause + ' and contains(r.' + member[i] + ',"' + searchText[i] + '")';
    });
}


 filterquery = filterquery + whereClause;

 var isAccepted = collectionReseller.queryDocuments(
    collectionReseller.getSelfLink(), filterquery,
    function (err, documents, responseOptions) {
        if (err) throw err;
        invoiceDoc = documents;
count =invoiceDoc.length;
            invoiceDoc.forEach(function (doc) {
                InvoiceList.push(doc);
                invoiceAmountTotal = parseFloat(invoiceAmountTotal) + parseFloat(doc.InvoiceAmount);
                 referalCommissionTotal = parseFloat(referalCommissionTotal) + parseFloat(doc.ReferralCommission);
                 developerCommissionTotal= parseFloat(developerCommissionTotal) + parseFloat(doc.DeveloperCommission);
            });
        InvoiceList.sort(SortByID);
        InvoiceList = InvoiceList.slice(pageNo * numberOfRecords, pageNo * numberOfRecords + numberOfRecords);
        // Check the feed and if empty, set the body to 'no docs found', 
        // else take 1st element from feed
        getContext().getResponse().setBody(JSON.stringify({ InvoiceList, count, invoiceAmountTotal, referalCommissionTotal, developerCommissionTotal }));

    });


}
function SortByID(a, b) {
    var aName = a.UpdatedOn.toLowerCase();
    var bName = b.UpdatedOn.toLowerCase();
    return ((aName < bName) ? -1 : ((aName > bName) ? 1 : 0));
}
if (!isAccepted) throw new Error('The query was not accepted by the server.');
}
函数getInvoice(页码、numberOfRecords、成员、搜索文本、customerGroupId、经销商ID){
var collectionReseller=getContext().getCollection();
var过滤器查询;
var计数=0,invoiceAmountTotal=0,referalCommissionTotal=0,developerCommissionTotal=0;
var customerIdString='';
var发票列表=[];
var条款;
如果(customerGroupId!=“”){
filterquery='从c中选择c.id,其中c.Type=“Customer”和c.CustomerGroupID=“”+CustomerGroupID+”;
var isAccepted=collectionReseller.queryDocuments(
collectionReseller.getSelfLink(),filterquery,
功能(错误、文档、响应选项){
var docCount=documents.length;
文档.forEach(功能(文档){
docCount--;
如果(docCount>0)
customerIdString=customerIdString+'“'+doc.id+'”,'
其他的
customerIdString=customerIdString+'''''+doc.id+'''
})
whereClause='where r.Type=“Invoice”和r.CustomerID在('+customerIdString+')中
var filterquery1='SELECT*FROM root r';
如果(member.length>0){
forEach成员(功能(val,i){
whereClause=whereClause+,包含(r.+member[i]+',“'+searchText[i]+'”);
});
}
isAccepted=CollectionRebeller.queryDocuments(
collectionReseller.getSelfLink(),filterquery1+Where子句,
功能(错误,发票单据){
var qr=过滤器查询1+whereClause;
计数=发票单据长度;
invoiceDoc.forEach(功能(单据){
invoiceAmountTotal=parseFloat(invoiceAmountTotal)+parseFloat(单据发票金额);
referalCommissionTotal=parseFloat(referalCommissionTotal)+parseFloat(doc.ReferralCommission);
developerCommissionTotal=parseFloat(developerCommissionTotal)+parseFloat(doc.DeveloperCommission);
发票列表推式生成(单据);
});
InvoiceList.sort(SortByID);
InvoiceList=InvoiceList.slice(页码*numberOfRecords,页码*numberOfRecords+numberOfRecords);
//检查提要,如果为空,则将正文设置为“未找到任何文档”,
//否则从提要中获取第一个元素
getContext().getResponse().setBody(JSON.stringify({InvoiceList,count,invoiceAmountTotal,referealCommissionTotal,developerCommissionTotal}));
});
});
}
其他的
{   
whereClause='其中r.Type=“发票”和r.ResellerID=“”+ResellerID+”;
filterquery='SELECT*FROM root r';
如果(member.length>0){
forEach成员(功能(val,i){
whereClause=whereClause+,包含(r.+member[i]+',“'+searchText[i]+'”);
});
}
filterquery=filterquery+Where子句;
var isAccepted=collectionReseller.queryDocuments(
collectionReseller.getSelfLink(),filterquery,
功能(错误、文档、响应选项){
如果(错误)抛出错误;
发票单据=单据;
计数=发票单据长度;
invoiceDoc.forEach(功能(单据){
发票列表推式生成(单据);
invoiceAmountTotal=parseFloat(invoiceAmountTotal)+parseFloat(单据发票金额);
referalCommissionTotal=parseFloat(referalCommissionTotal)+parseFloat(doc.ReferralCommission);
developerCommissionTotal=parseFloat(developerCommissionTotal)+parseFloat(doc.DeveloperCommission);
});
InvoiceList.sort(SortByID);
InvoiceList=InvoiceList.slice(页码*numberOfRecords,页码*numberOfRecords+numberOfRecords);
//检查提要,如果为空,则将正文设置为“未找到任何文档”,
//否则从提要中获取第一个元素
getContext().getResponse().setBody(JSON.stringify({InvoiceList,count,invoiceAmountTotal,referealCommissionTotal,developerCommissionTotal}));
});
}
函数SortByID(a,b){
var aName=a.UpdatedOn.toLowerCase();
var bName=b.UpdatedOn.toLowerCase();
返回((aNamebName)?1:0));
}
如果(!isAccepted)抛出新错误('服务器不接受该查询');
}

非常感谢您提供的任何帮助。

如果您想一次将所有250个文档恢复,需要使用
pageSize
字段填充
queryDocuments()
的选项参数。它是该函数调用的第三个可选参数。如果没有它,这个服务器端API将默认为100


您还可以将
pageSize
设置为-1以获取所有文档。但是,对于服务器端存储过程,我建议不要这样做。相反,您需要使用延续令牌处理分页。如果您想让它真正健壮,还需要处理存储过程过早关闭的问题。

如果您想一次恢复所有250个存储过程,则需要使用
pageSize
字段填充
queryDocuments()
的options参数。它是该函数调用的第三个可选参数。如果没有它,这个服务器端API将默认为100


您还可以将
pageSize
设置为-1以获取所有文档。但是,对于服务器端存储过程,我建议不要这样做。相反,您需要使用延续令牌处理分页。如果您想让它真正健壮,还需要处理存储过程过早关闭的问题。

谢谢Larry pagesize as-1也很有帮助。链接现在已断开,应该将代码示例放入堆栈溢出中。我删除了断开的链接。其实没必要