【问题标题】:Document/CosmosDB .Net client "DISTINCT" query error文档/CosmosDB .Net 客户端“DISTINCT”查询错误
【发布时间】:2018-09-13 09:12:36
【问题描述】:

我有一个包含具有以下结构的文档的集合:

{
    "Identifier": 1,
    "Values": {
        "value1": "33806",
        "value2": "10",
        "value3": "0"
    },
   ...
}

我创建了一个 UDF 来从 Values 字典中提取键:

function getKeys(dictionary) {
    let result = [];
    for (var key in dictionary) {
        result.push(key);
    }
    return result;
}

我有一个查询,它使用 UDF 来查找 Values 字典中的所有不同键。以下代码使用 Microsoft.Azure.DocumentDB.Core nuget 包库调用 CosmosDB:

var query = $@"
    SELECT DISTINCT
    VALUE i
    FROM
    (
        SELECT
        VALUE
        {{
             'keys': udf.getKeys(c.Values), 
             'id': c.Identifier
        }}
        FROM c
        WHERE c.Identifier = @Identifier
    ) AS dt
    JOIN i in dt.keys";

    var parameters = new SqlParameterCollection(new[]
    {
        new SqlParameter("@Identifier", identifier)
    });

    var documentQuery = store.Query(new SqlQuerySpec(query, parameters));

这是针对 Azure CosmosDB 模拟器运行的。当我通过http://localhost:8081 上的 UI 运行查询时,查询工作正常。

通过 .NET 客户端运行查询时,出现以下错误:

Microsoft.Azure.Documents.BadRequestException:消息: {"errors":[{"severity":"Error","location":{"start":25,"end":33},"code":"SC1001","message":"语法 错误,'DISTINCT' 附近的语法不正确。"}]},Windows/10.0.16299 文档数据库-netcore-sdk/1.9.1 ---> System.Runtime.InteropServices.COMException:来自 HRESULT 的异常: 0x800A0B00

我还没有针对 real CosmosDB 尝试过这个,但是它在数据浏览器中工作的事实让我认为这不是模拟器的能力问题。

【问题讨论】:

    标签: azure-cosmosdb azure-cosmosdb-sqlapi


    【解决方案1】:

    我还没有针对真正的 CosmosDB 尝试过这个,但是事实上 这在数据浏览器中有效让我认为这不是一种能力 模拟器问题。

    distinct 在 SQL 中被 cosmos db 模拟器或真实版本支持。 (https://feedback.azure.com/forums/263030-azure-cosmos-db/suggestions/6719531-provide-support-for-distinct?page=1&per_page=20)

    我用documentdb-netcore-sdk v.2.0.0 测试了你的代码,它运行良好。根据此问题文档,该错误似乎在 2.0.0-preview 或更高版本中得到解决。您可以更新软件包的版本。

    【讨论】:

    • 为此干杯!看起来更新是 5 天前发布的!现在就试一试
    猜你喜欢
    • 1970-01-01
    • 2022-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-15
    • 1970-01-01
    • 2020-02-27
    相关资源
    最近更新 更多