【问题标题】:How to fetch All records from azure cosmos db using query如何使用查询从 azure cosmos db 中获取所有记录
【发布时间】:2017-09-13 13:35:58
【问题描述】:

我想使用选择查询从 azure-cosmos DB 中获取 100 多条记录。

我正在编写一个存储过程并使用选择查询来获取记录。

这是我的存储过程 -

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));
    }
  );
}

最初,它使用的数据库中的数据量较少。

但是,由于数据量很大, 存储过程抛出此异常 -

执行函数时遇到异常。异常 = 错误: 由于“正文”,生成的消息会太大。从返回 带有当前消息的脚本并使用延续令牌来调用 再次编写脚本或修改您的脚本。堆栈跟踪:错误:结果 由于“正文”,消息会太大。从脚本返回 当前消息并使用延续令牌再次调用脚本或 修改你的脚本。

【问题讨论】:

  • 请问您的海量数据具体是多少?
  • 我们在 700 条记录后出现问题,每条记录的最大大小为 1 MB。

标签: azure-cosmosdb


【解决方案1】:

文档数据库对响应页面大小施加了限制。 此链接总结了其中一些限制: 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/

【讨论】:

    【解决方案2】:

    您是否使用 .NET sdk 来检索存储过程返回的数据?如果是这样,请利用 .HasMoreResults。它会自动获取允许的尺寸数据结果,因此不会显示您发布的错误。循环遍历它,直到没有更多的获取结果。

    http://www.kevinkuszyk.com/2016/08/19/paging-through-query-results-in-azure-documentdb/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-08
      • 1970-01-01
      • 2017-12-18
      相关资源
      最近更新 更多