Azure cosmosdb 无法从Cosmos存储过程中检索计数

Azure cosmosdb 无法从Cosmos存储过程中检索计数,azure-cosmosdb,azure-cosmosdb-sqlapi,cosmos,Azure Cosmosdb,Azure Cosmosdb Sqlapi,Cosmos,根据向过程提供的筛选查询,我无法检索文档计数。详情如下- SP脚本 function count(filterQuery, continuationToken) { var collection = getContext().getCollection(); var collectionLink = collection.getSelfLink(); var maxResult = 25; // The number of documents counted. var result = 0;

根据向过程提供的筛选查询,我无法检索文档计数。详情如下-

SP脚本

function count(filterQuery, continuationToken) {
var collection = getContext().getCollection();
var collectionLink = collection.getSelfLink();
var maxResult = 25;
// The number of documents counted.
var result = 0;

tryQuery(continuationToken);

// Helper method to check for max result and call query.
function tryQuery(nextContinuationToken) {
    var responseOptions = { continuation: nextContinuationToken, pageSize: maxResult };
    if (result >= maxResult || !query(responseOptions)) {
        setBody(nextContinuationToken);
    }
}

function query(responseOptions) {
    var query = "SELECT VALUE COUNT(1) FROM c WHERE c.ActivityId='1816820'";
    return (query && query.length) ?
        collection.queryDocuments(collectionLink, query, responseOptions, onReadDocuments) :
        collection.readDocuments(collectionLink, responseOptions, onReadDocuments);
}

function onReadDocuments(err, queryFeed, responseOptions) {
    if (err) {
        console.length(err);
        throw 'Error while reading document: ' + err;
    }

    console.log(queryFeed);     //prints 0
    result += queryFeed[0];

    if (responseOptions.continuation) {
        tryQuery(responseOptions.continuation);
    } else {
        setBody(null);
    }
}

function setBody(continuationToken) {
    var body = { count: result, continuationToken: continuationToken };
    getContext().getResponse().setBody(body);
}
}

这是截图。为了确保这一点,我已经在这里编写了硬编码的查询。否则,我将传递参数

下面是直接查询结果-

请帮忙

对于分区容器,在执行存储过程时 必须在请求选项中提供分区键值。存储 过程的作用域始终是分区键。具有 不同的分区键值对存储的分区不可见 程序

正如前面所说,当执行存储过程时,需要提供分区键值。但您提供的是分区密钥路径(“/ActivityId”),而不是分区密钥值。这就是为什么你得到0计数。因此,您需要将
“1816820”
作为分区键值传递以执行存储过程。大概是这样的:

对于分区容器,在执行存储过程时 必须在请求选项中提供分区键值。存储 过程的作用域始终是分区键。具有 不同的分区键值对存储的分区不可见 程序

正如前面所说,当执行存储过程时,需要提供分区键值。但您提供的是分区密钥路径(“/ActivityId”),而不是分区密钥值。这就是为什么你得到0计数。因此,您需要将
“1816820”
作为分区键值传递以执行存储过程。大概是这样的:


是您的分区密钥路径
/ActivityId
?是的,@SteveZhao。它是“/ActivityId”是您的分区密钥路径
/ActivityId
?是的,@SteveZhao。它是“/ActivityId”太棒了!!非常感谢史蒂夫。你太棒了:)太棒了!!非常感谢史蒂夫。你太棒了:)