使用 COSMOSDB sql 查询的对象键的别名

Alias of an object key using COSMOSDB sql query

我正在使用 Cosmos DB,我想编写一个 SQL 查询 returns 文档对象中的键的不同名称。

为了详细说明,假设您在一个容器中有以下文档,在 "make" 对象中有 "makeName" 键。

{ 
   "vehicleDetailId":"38CBEAF7-5858-4EED-8978-E220D2BA745E",
   "type":"Vehicle",
   "vehicleDetail":{ 
      "make":{ 
         "Id":"B57ADAAD-C16E-44F9-A05B-AAB3BF7068B9",
         "makeName":"BMW"
      }
   }
}

我想编写一个查询来显示 "vehicleMake" 键代替 "makeName"。 如何在嵌套对象中给出别名 属性.

输出应该如下所示

{ 
   "vehicleDetailId":"38CBEAF7-5858-4EED-8978-E220D2BA745E",
   "type":"Vehicle",
   "vehicleDetail":{ 
      "make":{ 
         "Id":"B57ADAAD-C16E-44F9-A05B-AAB3BF7068B9",
         "vehicleMake":"BMW"
      }
   }
}

我不知道如何在 Cosmosdb 中查询以获得上述结果。

属性的别名类似于您在 SQL 服务器中使用 as 关键字创建列别名的方式。在您的示例中,它将是:

SELECT c.vehicleDetail.make.makeName as vehicleMake
FROM c

这会 return:

[
  {
    "vehicleMake": "BMW"
  }
]

试试这个:

SELECT c.vehicleDetailId, c.type, 
{"make":{"Id":c.vehicleDetail.make.Id, "vehicleMake":c.vehicleDetail.make.makeName}} as vehicleDetail 
FROM c

它使用以下文档中描述的别名。我可以在文档或博客文章中找到的所有别名示例仅显示单一级别的 json 输出,但碰巧您可以在对象 (vehichleDetail) 中嵌套对象 (make) 以获得您想要的行为想要。

https://docs.microsoft.com/en-us/azure/cosmos-db/sql-query-aliasing