Azure cosmosdb 无法从Cosmos存储过程中检索计数
根据向过程提供的筛选查询,我无法检索文档计数。详情如下- SP脚本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;
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”太棒了!!非常感谢史蒂夫。你太棒了:)太棒了!!非常感谢史蒂夫。你太棒了:)