Как получить элемент массива из определенной позиции в документе CosmosDB?

Предположим, у меня есть документ со следующей структурой,

{
    "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"
}

Как мне написать запрос для этого?


person Kajal Patel    schedule 06.01.2020    source источник


Ответы (1)


Используйте встроенный ARRAY_SLICE функция. Это позволяет выбрать часть массива.

Передайте массив, начальную позицию, количество выбираемых элементов.

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

Выход:

{
    "SecondElement": [
        {
            "Id": 1,
            "Model": "ABDS"
        }
    ]
}
person Paul    schedule 06.01.2020
comment
Предположим, мне нужно только поле id из этого результата, как мы можем изменить запрос - person Kajal Patel; 06.01.2020