CosmosDB 使用 CosmosClient 在 C# 中获取标量值

CosmosDB Get Scalar Value in C# using CosmosClient

有谁知道如何使用 Microsoft.Azure.Comos.CosmosClient 获取标量值?

我浏览了网络,找不到任何示例。

我想要做的就是能够执行这样的查询

SELECT value COUNT(c._id) 
FROM c 
WHERE c._ts > @timestamp

CosmosClientContainer 类 似乎都没有任何函数来处理查询类型。

谢谢

您可以执行以下操作:

var container = client.GetContainer("test", "test");
var qry = container.GetItemQueryIterator<int>("SELECT VALUE COUNT(1) FROM c");
int count;
while (qry.HasMoreResults)
{
    count = (await qry.ReadNextAsync()).SingleOrDefault();
}

之所以有效,是因为您从 Cosmos REST API 获得了一个 json 整数数组。 SDK 对其执行 JsonConvert.Deserialize<int>(或类似),您知道其结果是您要求的单个值。

可能有更好的方法,但我也没有在v3中看到任何标量方法。

var count = await _CosmosClient.GetCosmosContainer(CollectionName).
                          GetItemLinqQueryable<int>
                          ().CountAsync();

return count;

这就是我对 return 计数所做的。但是,我仍然想知道幕后是否有任何循环。我希望我有一个可以 return 计数的方法。

任何人都可以解释一下我的解决方案与私密的解决方案之间的区别 = (await qry.ReadNextAsync()).SingleOrDefault();