You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Microsoft.Azure.Cosmos 3.38.1中Max/Min函数及SQL查询失效问题

Cosmos DB 3.38.1中Max/Min函数及SQL查询失效问题

我无论如何尝试,都无法在Microsoft.Azure.Cosmos 3.38.1版本中让Max()、MaxAsync()或直接SQL查询生效。

在Cosmos DB Emulator中执行以下SQL语句:

SELECT MAX(f.preisEuro) AS maxWert, MIN(f.preisEuro) AS minWert FROM fahrzeuge f

可以得到预期结果:

[
    {
        "maxWert": 5000000,
        "minWert": 1273
    }
]

但以下两段C#代码均无法正常工作:

第一段代码(直接SQL查询):

var query = new QueryDefinition(
    "SELECT max(f.preisEuro) as maxWert, min(f.preisEuro) as minWert FROM fahrzeuge f");

using var setIterator = container.GetItemQueryIterator<dynamic>(
    query
    ,requestOptions: new QueryRequestOptions()
    {
        // PartitionKey = new PartitionKey(MagicValues.PartionKeyValue),
        MaxConcurrency = 1,
        // MaxItemCount = 1,
    }
);
var results = new List<dynamic>();
while (setIterator.HasMoreResults)
{
    var response = await setIterator.ReadNextAsync();
    Console.WriteLine($"Response: {response.StatusCode}");
    results.AddRange(response);
}

第二段代码(Linq MinAsync):

var minPreis = await container.GetItemLinqQueryable<Fahrzeug>()
            .Select(f => f.PreisEuro).MinAsync();

我尝试过修改SQL中变量名和min()/max()关键字的大小写,但返回结果均为空JSON对象,或MinAsync()、MaxAsync()返回0。我知道可以读取整个容器后循环计算最值,但Microsoft.Azure.Cosmos.Linq.CosmosLinqExtensions中提供了MinAsync()、MaxAsync()函数,理应可以直接使用。

更新/解决方案

根本问题是我使用了错误的容器名称。Cosmos不会抛出错误,只会在使用Min/Max时返回0,或执行SQL语句时返回空结果。


内容的提问来源于stack exchange,提问作者Jan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 11:22:53