如何从 CosmosDB 文档中的特定位置检索数组元素?

How to retrieve array element from a specific position in CosmosDB document?

假设我有一个具有以下结构的文档,

{
    "VehicleDetailId": 1,
    "VehicleDetail": [
        {
            "Id": 1,
            "Make": "BMW"
        },
        {
            "Id": 1,
            "Model": "ABDS"
        },
        {
            "Id": 1,
            "Trim": "5.6L/ASMD"
        },
        {
            "Id": 1,
            "Year": 2008
        }
    ]
}

现在我想从 VehicleDetail 数组中检索位于 特定位置 的数组元素,就像我想检索第二个元素一样,即

{
    "Id": 1,
    "Model": "ABDS"
}

或者第三个,

{
    "Id": 1,
    "Trim": "5.6L/ASMD"
}

我应该如何编写查询来实现这一点?

使用内置的ARRAY_SLICE函数。这允许您 select 数组的一部分。

将数组、起始位置、元素个数传给select。

SELECT ARRAY_SLICE(c.VehicleDetail, 1, 1) As SecondElement
FROM c

输出:

{
    "SecondElement": [
        {
            "Id": 1,
            "Model": "ABDS"
        }
    ]
}