Cosmos DB SQL 调整输出

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

如何使用 SQL for Cosmos DB 在查询时重塑此结构?

数据库中的结构:

{
   "id": "id-1",
   "Costs": {
            "Items": {
                "d1": {
                    "Title": "A1",
                    "Amount": 100
                },
                "d2": {
                    "Title": "A2",
                    "Amount": 200
                },
                "d3": {
                    "Title": "A3",
                    "Amount": 300
                }
   }
}

输出结构:

{
  "id": "id-1",
  "Costs": {
                "d1": 100,
                "d2": 200,
                "d3": 300
  }
}
azure-cosmosdb azure-cosmosdb-sqlapi
1个回答
1
投票

Cosmos DB SQL 调整输出:

以下是我遵循的步骤:

  • "d1": c.Costs.Items.d1.Amount
    Costs 对象内的 Items 对象内的 d1 子对象中提取 Amount 字段。该值被分配给新对象的 d1 键。

  • "d2": c.Costs.Items.d2.Amount
    "d3": c.Costs.Items.d3.Amount
    的工作方式与 d1 提取相同,但d2d3 子对象除外。

  • AS Costs
    这会将输出中新形成的对象重命名为 Costs

  • 输出对象将具有键Costs,包括“d1”、“d2”和“d3”条目。

下面是我尝试过的查询:

SELECT c.id,
{
    "d1": c.Costs.Items.d1.Amount,
    "d2": c.Costs.Items.d2.Amount,
    "d3": c.Costs.Items.d3.Amount
} AS Costs FROM c 

WHERE c.id = "id-1"

输出:

[
    {
        "id": "id-1",
        "Costs": {
            "d1": 100,
            "d2": 200,
            "d3": 300
        }
    }
]
© www.soinside.com 2019 - 2024. All rights reserved.