Cosmos DB中的MaxItemCount提要选项属性不起作用

MaxItemCount feed options property in Cosmos DB doesnt work(Cosmos DB中的MaxItemCount提要选项属性不起作用)
本文介绍了Cosmos DB中的MaxItemCount提要选项属性不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试编写一个运行SQL查询的简单存储过程,并且希望通过使用MaxItemCount属性来限制结果。查询生成3个文档,但我只想返回1个文档。我正在使用MaxItemCount属性强制此限制,但这似乎不起作用。

function uspGetDetailsByEmailId(EmailId) {
  var collection = getContext().getCollection();
  var collectionLink = collection.getSelfLink();
  var response = getContext().getResponse();
  var recordcount = 0;
  if (!EmailId) throw new Error("Please provide the EmailId for which     Details need to be retrieved");     

  retrieveDetails();     

  function retrieveDetails() {
    var requestOptions = {MaxItemCount: "1"};
    var dbquery = {query: "SELECT * FROM c"};
    var isAccepted = collection.queryDocuments(collectionLink, dbquery, requestOptions,function (err, results) {
      console.log(results.length)  
      response.setBody(results)
      if (err) throw err;                   
    });

    if (!isAccepted) {
      response.setBody(null);
    }
  }
}

推荐答案

MaxItemCount不是对整个查询将返回的文档量的限制。

Cosmos DB始终返回分页数据。这意味着如果您取回100个文档,那么这些文档是从许多请求中返回的,每个请求的文档量相同或几乎相同,这是一个很好的变化。然后将它们相加并返回。

MaxItemCount是单次Cosmos DB的最大文档帐号,但是如果您使用queryDocuments方法查询数据,那么您将获得相同的数据量,但是您将限制每次Cosmos DB最多携带1个文档。

在这种情况下,您要做的是使用查询迭代器,并在拥有第一个文档后转义迭代器的循环。

更深入地了解这一点(主要使用我能找到的唯一文档https://azure.github.io/azure-cosmosdb-js-server),看起来存储过程使用的js-server完全是一个不同的SDK。

进一步深入研究后,我发现RequestOptions对象中没有MaxItemCount属性(即使有,也会是一个整数)。但是,有一个名为pageSize的属性,您可以在https://azure.github.io/azure-cosmosdb-js-server/DocDbWrapperScript.js.html的第554行看到。

测试后,似乎将pageSize设置为1将成功将结果限制为所需数量。

以下是更新后的代码:

function uspGetDetailsByEmailId(EmailId) {
  var collection = getContext().getCollection();
  var collectionLink = collection.getSelfLink();
  var response = getContext().getResponse();
  var recordcount = 0;
  if (!EmailId) throw new Error("Please provide the EmailId for which     Details need to be retrieved");     

  retrieveDetails();     

  function retrieveDetails() {
    var requestOptions = { pageSize: 1};
    var dbquery = {query: "SELECT * FROM c"};
    var isAccepted = collection.queryDocuments(collectionLink, dbquery, requestOptions,function (err, results) {
      console.log(results.length)  
      response.setBody(results)
      if (err) throw err;                   
    });

    if (!isAccepted) {
      response.setBody(null);
    }
  }
}

这篇关于Cosmos DB中的MaxItemCount提要选项属性不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Update another component when Formik form changes(当Formik表单更改时更新另一个组件)
Formik validation isSubmitting / isValidating not getting set to true(Formik验证正在提交/isValiating未设置为True)
React Validation Max Range Using Formik(使用Formik的Reaction验证最大范围)
Validation using Yup to check string or number length(使用YUP检查字符串或数字长度的验证)
Updating initialValues prop on Formik Form does not update input value(更新Formik表单上的初始值属性不会更新输入值)
password validation with yup and formik(使用YUP和Formick进行密码验证)