You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在DocumentDB存储过程中获取各查询的请求费用并输出至Azure控制台?

在DocumentDB存储过程中输出每条查询的请求费用

嘿,这个问题我刚好有经验!在Azure Cosmos DB(也就是之前的DocumentDB)的存储过程里,完全可以实现输出每条查询的请求费用到Azure门户控制台,核心是利用存储过程上下文提供的getLastRequestStatistics()方法。

具体实现方法

每次执行完一条SQL查询后,你可以立即调用getLastRequestStatistics()获取该次请求的统计信息,其中的requestCharge字段就是这条查询消耗的请求单位(RU,也就是你说的请求费用),然后用console.log输出即可。

下面是一个包含3条查询的完整存储过程示例:

function logQueryRequestCharges() {
    var context = getContext();
    var collection = context.getCollection();
    var response = context.getResponse();

    // 执行第一条查询并获取费用
    var query1 = 'SELECT * FROM c WHERE c.type = "electronics"';
    collection.queryDocuments(collection.getSelfLink(), query1, {}, function(err, docs) {
        if (err) throw err;
        // 获取第一条查询的请求统计
        var query1Stats = context.getLastRequestStatistics();
        console.log('第一条查询的请求费用: ' + query1Stats.requestCharge + ' RU');

        // 执行第二条查询并获取费用
        var query2 = 'SELECT VALUE AVG(c.price) FROM c WHERE c.inStock = true';
        collection.queryDocuments(collection.getSelfLink(), query2, {}, function(err, docs) {
            if (err) throw err;
            var query2Stats = context.getLastRequestStatistics();
            console.log('第二条查询的请求费用: ' + query2Stats.requestCharge + ' RU');

            // 执行第三条查询并获取费用
            var query3 = 'SELECT c.id, c.name FROM c ORDER BY c.createdAt DESC OFFSET 0 LIMIT 10';
            collection.queryDocuments(collection.getSelfLink(), query3, {}, function(err, docs) {
                if (err) throw err;
                var query3Stats = context.getLastRequestStatistics();
                console.log('第三条查询的请求费用: ' + query3Stats.requestCharge + ' RU');

                // 可选:返回存储过程执行结果
                response.setBody('所有查询的请求费用已输出至控制台');
            });
        });
    });
}

关键注意事项

  • 顺序执行查询:因为存储过程的查询是异步的,必须在每条查询的回调函数里执行下一条查询,这样才能保证getLastRequestStatistics()获取的是当前这条查询的统计数据,不会被后续请求覆盖。
  • 查看日志位置:在Azure门户的Cosmos DB资源中,进入「数据资源管理器」,找到对应的存储过程并执行后,切换到「控制台」标签页,就能看到你用console.log输出的费用信息。
  • RU的含义:这里的requestCharge就是Cosmos DB的请求单位,代表该查询消耗的计算资源,也是计费的核心依据。

内容的提问来源于stack exchange,提问作者tlt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 07:04:35