如何在不知道 ARRAY 索引的情况下使这个 CosmosDB SQL 查询工作?

How to make this CosmosDB SQL Query work without knowing ARRAY index?

我查询 CosmosDB 的方式是通过 C# WEB API 获取一个字符串并向 return 输出一些数据,对我有用的查询如下以下

SELECT *
FROM c IN jongel.OriginalData.base.sales.variants
WHERE c.globalTradeItemNumber.globalTradeItemNumberType[0].GTIN = '1111111111111'

问题是我必须知道此示例中 globalTradeItemNumberType ARRAY[0]ARRAY INDEX 才能正常工作,但它并不总是 0,它可能基本上是 0-9 中的任何数字,我不知道如何重写查询,以便无论找到匹配数据的索引如何,它都能正常工作?

如何重写此查询,以便我不需要事先知道 ARRAY INDEX

--- 编辑 ---

示例文档已缩短,仅包含所需部分

{
    "id": "635af816-8db7-49c6-8284-ab85116b499b",
    "brand": "XXX",
    "IntegrationSource": "XXX",
    "DocumentType": "Item",
    "ItemInformationType": "",
    "ItemLevel": "Article",
    "ItemNo": "0562788040",
    "UpdatedDate": "1/1/2020 4:00:01 AM",
    "UpdatedDateUtc": "2020-01-01T04:00:01.82Z",
    "UpdatedBy": "XXX",
    "OriginalData": {
        "corporateBrandId": "2",
        "productId": "0562788",
        "articleId": "0562788040",
        "season": "201910",
        "base": {
            "sales": {
                "SAPArticleNumber": "562788040190",
                "simpleColour": {
                    "simpleColourId": "99",
                    "simpleColourDescription": "Green",
                    "translatedColourDescription": [
                        {
                            "languageCode": "sr",
                            "simpleColourDescription": "Zeleno"
                        },
                        {
                            "languageCode": "zh-Hans",
                            "simpleColourDescription": "绿色"
                        },
                        {
                            "languageCode": "vi-VN",
                            "simpleColourDescription": "Xanh la cay"
                        }
                    ]
                },
                "variants": [
                    {
                        "variantId": "0562788040001",
                        "variantNumber": "562788040190001",
                        "variantDescription": "YYYYYYYYY, XXS",
                        "sizeScaleAndCode": "176-001",
                        "netWeight": 0.491,
                        "unitsOfMeasure": {
                            "unitsOfMeasureType": [
                                {
                                    "alternativeUOM_ISO": "PCE",
                                    "length": 320,
                                    "width": 290,
                                    "height": 31,
                                    "unitOfDimension": "MM",
                                    "volume": 2876.8,
                                    "volumeUnit": "CCM",
                                    "weightUnit": "KG"
                                }
                            ]
                        },
                        "globalTradeItemNumber": {
                            "globalTradeItemNumberType": [
                                {
                                    "GTIN": "1111111111111",
                                    "GTINCategory": "Z3"
                                },
                                {
                                    "GTIN": "2222222222222",
                                    "GTINCategory": "Z3"
                                },
                                {
                                    "GTIN": "3333333333333",
                                    "GTINCategory": "IE"
                                }
                            ]
                        }
                    }
                ]
            }
        }
    }
}

我根据下面的建议答案尝试了以下查询,但没有成功

  SELECT *
FROM c 
WHERE ARRAY_CONTAINS(c.OriginalData.base.sales.variants.globalTradeItemNumber.globalTradeItemNumberType, {GTIN:"1111111111111"}, true)

我猜上面的失败是因为树的变体部分也是一个数组?

注意:变体数组可以包含多个对象,因此它并不总是索引[0]

您可以尝试使用 ARRAY_CONTAINS 函数。

SELECT *
FROM c IN jongel.OriginalData.base.sales.variants
WHERE ARRAY_CONTAINS(c.globalTradeItemNumber.globalTradeItemNumberType, {GTIN:"1111111111111"}, true)

这将允许查询在数组中的所有项目中搜索匹配的 GTIN 值。

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