如何在Azure Cosmos DB中获得两个相同的属性

时间:2019-07-17 05:07:29

标签: tsql azure-cosmosdb

我正在使用cosmos db创建服务。我正在尝试创建搜索查询。 查询:

SELECT product.Name,product1.Name
FROM catalog
join industry in catalog.Industy 
join category in industry.Category 
join product1 in category.Product 
join Subcategory in category.Subcategory 
join product in Subcategory.Product
 WHERE CONTAINS(product1.Name,'dg')

但是我无法同时获得产品和产品清单。它给了我错误。名称已被使用。 错误:

Object creation error, property name 'Name' specified more than once

我要提取的树:

[
  {
    "id": "string",
    "industy": [
      {
        "id": "string",
        "category": [
          {
            "id": "string",
            "subcategory": [
              {
                "id": "string",
                "product": [
                  {
                    "id": "string",
                    "methodOfPreparation": [
                      {
                        "id": "string",
                      }
                    ],
                    "addons": [
                      {
                        "id": "string"
                      }
                    ]
                  }
                ]
              }
            ],
            "product": [
              {
                "id": "string",

                "methodOfPreparation": [
                  {
                    "id": "string"
                  }
                ],
                "addons": [
                  {
                    "id": "string"
                  }
                ]
              }
            ]
          }
        ]
      }
    ]
  }
]

期望输出

product[],prodcut1[]

我该如何解决?

1 个答案:

答案 0 :(得分:1)

首先,如果您使用别名作为注释中提到的@Zohar,则可以解决该错误。

SELECT product.Name as productName,product1.Name as product1Name
FROM catalog
join industry in catalog.industy 
join category in industry.category 
join product1 in category.product 
join Subcategory in category.subcategory 
join product in Subcategory.product

原因是每个检索到的项目都是一个obj,结果的格式是一个包含许多对象的数组。该对象不能接受重复的列名。

enter image description here

如果要获得product[],prodcut1[]之类的格式,则需要循环结果并自己汇编。(例如,使用存储过程)