Azure 如何在DocumentDb.NET SDK上使用ReadDocumentFeedAsync?

Azure 如何在DocumentDb.NET SDK上使用ReadDocumentFeedAsync?,azure,azure-cosmosdb,Azure,Azure Cosmosdb,我只是尝试使用简单的.NET控制台程序浏览Azure DocumentDb集合中的所有文档: 使用(var client=newdocumentclient(serviceEndPoint,authKey)) { var feed=client.ReadDocumentFeedAsync(docsLink,newfeedoptions{MaxItemCount=-1}); WriteLine(“feed.Count={0}”,feed.Count); WriteLine(“feed.Curren

我只是尝试使用简单的.NET控制台程序浏览Azure DocumentDb集合中的所有文档:

使用(var client=newdocumentclient(serviceEndPoint,authKey))
{
var feed=client.ReadDocumentFeedAsync(docsLink,newfeedoptions{MaxItemCount=-1});
WriteLine(“feed.Count={0}”,feed.Count);
WriteLine(“feed.CurrentResourceQuotaUsage={0}”,feed.CurrentResourceQuotaUsage);
var计数=0;
foreach(提要中的变量项)
{
计数++;
}
WriteLine(“读取计数={0}”,计数);
}
我的代码基于

尽管使用MaxItemCount=-1(用于动态页面大小调整),但我始终获得以下结果:

feed.Count = 9700
feed.CurrentResourceQuotaUsage = documentSize=612;documentsSize=515130;documentsCount=425200;collectionSize=627243;
Read count = 9700
因此,我的集合包含超过40万个文档,但提要只返回前9700个文档

azure门户度量(据我所知)确认有425k个文档:

我曾尝试手动设置
MaxItemCount
,但结果仅限于前9700项


那么,我的代码出了什么问题?

代码中缺少的是对延续令牌的处理。实际上,每个请求都被分配了一个特定的执行时间,并且它试图在分配的时间内返回最大的数据量。如果有更多数据,它将返回一个延续令牌,您将使用该令牌并再次执行查询。由于您希望获取所有记录,因此将执行循环,直到服务返回延续令牌为止

请参阅下面的示例代码(我还没有尝试运行它)


谢谢,我错过了FeedOptions参数上的ContinuationToken。而这似乎是误导。
        using (var client = new DocumentClient(serviceEndPoint, authKey))
        {
            string continuationToken = null;
            var count = 0;
            do
            {
                var feed = client.ReadDocumentFeedAsync(docsLink, new FeedOptions { MaxItemCount = -1, RequestContinuation = continuationToken }).Result;
                continuationToken = feed.ResponseContinuation;
                Console.WriteLine("feed.Count = {0}", feed.Count);
                Console.WriteLine("feed.CurrentResourceQuotaUsage = {0}", feed.CurrentResourceQuotaUsage);
                foreach (var item in feed)
                {
                    count++;
                }
            }
            while (continuationToken != null);

            Console.WriteLine("Read count = {0}", count);
        }