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

时间:2019-12-26 16:46:50

标签: azure azure-cosmosdb azure-cosmosdb-sqlapi

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

详细说明一下,假设您在一个容器中具有以下文档,该容器在“ make”对象中具有“ makeName”键。

MyCustomObj  customObj = (MyCustomObj) parentLayout.getAdapter().getItem(i);

我想编写一个查询以显示“ vehicleMake”键代替“ makeName”。 如何在嵌套对象属性中提供别名。

输出应如下所示

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

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

2 个答案:

答案 0 :(得分:1)

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

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

这将返回:

[
  {
    "vehicleMake": "BMW"
  }
]

答案 1 :(得分:0)

尝试一下:

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

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

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