c# - 为什么从 C# 代码运行此 CosmosDB SQL 查询会失败?
问题描述
我正在 CosmosDB 中的 azure 门户数据资源管理器中运行此查询,它运行良好
SELECT COUNT(UniqueIDValues) AS UniqueCount
FROM (
SELECT DISTINCT c.id
FROM c
JOIN i IN c.ItemsInBasket
WHERE c.Brand = 'xxx'
AND i.Item.PromotionName = 'PromOnePiece_20201029_202001_25'
AND c.IsRedeemed = false
AND c.IsDeleted = false
) AS UniqueIDValues
它产生预期的结果
[
{
"UniqueCount": 4
}
]
但是如果我从这样的天蓝色函数运行相同的查询
FeedIterator setIterator = _container.GetItemQueryStreamIterator(
$"SELECT COUNT(UniqueIDValues) AS UniqueCount " +
$"FROM ( " +
$"SELECT DISTINCT c.id " +
$"FROM c " +
$"JOIN i IN c.ItemsInBasket " +
$"WHERE c.Brand = 'xxx' " +
$"AND i.Item.PromotionName = 'PromOnePiece_20201029_202001_25' " +
$"AND c.IsRedeemed = false " +
$"AND c.IsDeleted = false " +
$" ) AS UniqueIDValues",
requestOptions: new QueryRequestOptions()
{
PartitionKey = new PartitionKey(brand),
MaxConcurrency = -1,
MaxItemCount = -1
});
while (setIterator.HasMoreResults)
{
using (ResponseMessage response = await setIterator.ReadNextAsync())
{
if (response.IsSuccessStatusCode)
{
using (StreamReader sr = new StreamReader(response.Content))
using (JsonTextReader jtr = new JsonTextReader(sr))
{
JsonSerializer jsonSerializer = new JsonSerializer();
JObject items = jsonSerializer.Deserialize<JObject>(jtr);
numberOfPromotions = (decimal?)items.SelectToken("Documents[0].UniqueCount");
return numberOfPromotions ?? 0;
}
}
}
}
这返回 0 个结果,我不知道为什么,我检查了所有变量它们是否正确,我什至对它们进行了硬编码,但在通过 SDK 运行时它仍然无法工作。
我在这里想念什么?
解决方案
假设对于其他查询运行相同的代码,可能有以下原因导致它不起作用:
- 它在错误的地方(容器或帐户)查询。
- 代码生成的查询错误(使用调试器复制查询值并在 Azure 数据资源管理器中运行)。
- 当您阅读记录时,它们已被其他应用程序删除。
- 您正在查询错误的分区键(您正在查询的分区键没有任何此类记录)。
推荐阅读
- django - Django IntegrityError NOT NULL 约束失败,不使用 null 和空白
- c# - c# SourceGenerator 忽略添加到生成代码的 xml 注释
- python - “WebElement”类型的对象没有 len() - Python Selenium
- list - Jinja显示最大的数字
- ckeditor - 如何在ckeditor中获取提到的用户项目对象
- javascript - 下一条语句不会捕获更改的 css() 值。为什么?
- angular - 如何在角度 api 调用中传递参数
- realex-payments-api - 无法初始化 Direct POST 结帐解决方案 [global-payments-api]
- python - Python 从 6 个字符的 random.shuffle 列表中选择一组固定的 4 个字符
- javascript - 如何将映射数据返回到 DOM