【问题标题】:Max item count in Cosmos DB triggerCosmos DB 触发器中的最大项目数
【发布时间】:2022-06-10 19:53:36
【问题描述】:

我正在为 Cosmos DB 容器创建预触发器。预触发器应该获取与触发文档 ID 相关的所有数据。当预期有超过 100 个文档时,incoming_document.items 总是返回 100(这似乎受到查询的限制)。我尝试在 FeedOptions 参数中将 pageSize 属性设置为 -1 并使用 continuation,但它仍然给我 100。我该如何解决这个问题以给出总数?

这里是简化版的代码(没有续,我用了和here类似的代码):

function trgAddStats() {
    var context = getContext();
    var request = context.getRequest();
    var incoming_document = request.getBody();

    var container = context.getCollection();
    var incoming_document.items = 1;
    var filterQuery = {
        "query": `SELECT t.customer, t.amount FROM Transactions_ds t WHERE t.customer = @customer`,
        "parameters": [{
                "name": "@customer",
                "value": incoming_document.customer
            }
        ]
    };
    var isAccepted = container.queryDocuments(container.getSelfLink(), filterQuery, {},
        function (err, items, responseOptions) {
            if (err) throw new Error("Error" + err.message);
            incoming_document.items += items.length;    
            request.setBody(incoming_document);
        }
    );

    if (!isAccepted) throw "Unable to update transaction, abort";
}

【问题讨论】:

  • 你应该在 feedoptions 中设置maxItemCount

标签: triggers azure-cosmosdb


【解决方案1】:
  • 要在 Cosmos DB 中获取超过 100 的文档,我们可以使用 x-ms-max-item-count

  • 查询执行可以返回的值的最大数量由 x-ms-max-item-count 标头完成。

  • 查询结果的默认值为100,可以使用此标头从1–1000进行配置。

  • 有关查询结果分页的更多详细信息,请访问Microsoft Documentation

  • 您也可以在查询资源管理器中自定义每页的项目数,例如 here

【讨论】:

    猜你喜欢
    • 2023-01-31
    • 2021-10-03
    • 2019-01-04
    • 2022-06-23
    • 1970-01-01
    • 1970-01-01
    • 2018-07-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多