SQL 查询未从 Cosmos 容器返回预期输出

问题描述 投票:0回答:1

我正在尝试宇宙查询从我的宇宙容器中检索每个功能标签类别的最新版本项目,但它返回容器中的所有项目,但不是最新项目(具有最高版本),需要帮助来解决此问题吗?

尝试下面的sql查询

SELECT  c
FROM c JOIN (
    SELECT c.featureTag, MAX(c.version) AS latest_version
    FROM c
    GROUP BY c.featureTag
) AS latest_versions
WHERE c.featureTag = latest_versions.featureTag AND 
latest_versions.latest_version = c.version

下面是容器中的一个示例项目(您可以创建更多项目,只需增加具有相同 featureTag 的版本号。类似地也可以创建一些具有不同 featureTag 的项目)

{
    "featureName": "Extra File Download",
    "featureTag": "Extrafile-download",
    "startTime": "2024-03-21T17:00:00",
    "endTime": "2024-03-22T16:00:00",
    "version": "1",
    "groups": [
        "EXTENSION-Factory",
        "EXTENSION-Factory03"
    ],
    "factoryAffiliations": [

        "AAA",
        "BBB",
        "CCC",
        "DDD"
    ],
    "dependencyFeatures": [
        "usecase-code"
    ]
}
sql azure-cosmosdb azure-cosmosdb-sqlapi
1个回答
0
投票

您只能加入同一文档中的属性。这就是为什么您会返回所有文档,因为子查询仅返回该特定文档的版本和标签。

Cosmos 不支持跨文档的联接。在客户端处理它可能是最简单的。或者更改您的架构,以允许您通过属性识别最新版本或包含有关同一文档中版本的信息。

© www.soinside.com 2019 - 2024. All rights reserved.