Azure Cosmos DB SDK v3 查询多个文档失败:网关无法检索查询计划

Azure Cosmos DB SDK v3 query for multiple documents fails: Gateway Failed to Retrieve Query Plan

使用 Cosmos SDK v3 中的 Cosmos DB SQL API,我试图查询 projects 容器,它有一个 /organization 分区键。


var cosmosDb = await Storage.GetCosmosDb();
var queryDefinition = new QueryDefinition($"SELECT * FROM projects project WHERE project.organization = '{CurrentUser.Organization}'");
var queryRequestOptions = new QueryRequestOptions
{
    PartitionKey = new PartitionKey("organization"),
};
var projectsQuery = cosmosDb.Containers[typeof(Project)]
    .GetItemQueryIterator<Project>(queryDefinition, null, queryRequestOptions);
var projects = new List<Project>();
while (projectsQuery.HasMoreResults)
{
    projects.AddRange(await projectsQuery.ReadNextAsync());
}

结果是错误的:

Response status code does not indicate success: 400 Substatus: 0 Reason: (Response status code does not indicate success: 400 Substatus: 0 Reason: (Gateway Failed to Retrieve Query Plan: Unknown QueryFeatures: NonValueAggregateActivityId: ceb5a509-36a0-4e20-87cd-32b6425dc757, Microsoft.Azure.Documents.Common/2.4.0.0, Windows/10.0.18362 cosmos-netstandard-sdk/3.2.1).).

我是不是遗漏了什么明显的东西?这个错误是什么意思?

在 x86 中 运行ning 时,这已被检测为 SDK 3.2.0 上的一个问题:https://github.com/Azure/azure-cosmos-dotnet-v3/issues/856

当前的解决方法是在使用模拟器时在 x64 中 运行。

它应该会在即将发布的 3.2.1 版本中得到修复。

将 CosmosDB 模拟器更新到最新版本应该可以解决这个问题。

我在 2.4.5 中遇到了问题,在 2.5.7 中不再有这个问题。

对我来说,是集合中的手动缩放模式,将其更新为自动缩放,就像容器设置一样,它起作用了。