Поделиться через


ObjectToArray (запрос NoSQL)

ОБЛАСТЬ ПРИМЕНЕНИЯ: NoSQL

Преобразует каждую пару полей и значений в объект JSON в элемент, а затем возвращает набор элементов в виде массива JSON. По умолчанию элементы массива содержат новое k поле для имени исходного поля и новое v поле для значения исходного поля. Эти новые имена полей можно дополнительно настроить.

Синтаксис

ObjectToArray(<object_expr> [, <string_expr_1>, <string_expr_2>])

Аргументы

Description
object_expr Выражение объекта со свойствами в парах полей и значений.
string_expr_1(Необязательно) Строковое выражение с именем поля, представляющего часть поля исходной пары полей и значений.
string_expr_2(Необязательно) Строковое выражение с именем поля, представляющего часть значения исходной пары полей и значений.

Типы возвращаемых данных

Массив элементов с двумя полями k или v настраиваемыми полями.

Примеры

В этом примере показано преобразование статического объекта в массив пар полей и значений с помощью идентификаторов по умолчанию k и v идентификаторов.

SELECT VALUE
    ObjectToArray({ 
        "a": "12345", 
        "b": "67890"
    })
[
  [
    {
      "k": "a",
      "v": "12345"
    },
    {
      "k": "b",
      "v": "67890"
    }
  ]
]

В этом примере имя поля обновляется для использования идентификатора name .

SELECT VALUE
    ObjectToArray({ 
        "a": "12345", 
        "b": "67890"
    }, "name")
[
  [
    {
      "name": "a",
      "v": "12345"
    },
    {
      "name": "b",
      "v": "67890"
    }
  ]
]

В этом примере имя значения обновляется для использования идентификатора value , а имя поля использует key идентификатор.

SELECT VALUE
    ObjectToArray({ 
        "a": "12345", 
        "b": "67890"
    }, "key", "value")
[
  [
    {
      "key": "a",
      "value": "12345"
    },
    {
      "key": "b",
      "value": "67890"
    }
  ]
]

В этом последнем примере используется элемент в существующем контейнере, в который хранятся данные с помощью полей в объекте JSON.

[
  {
    "name": "Witalica helmet",
    "category": "sport-helmets",
    "quantities": {
      "small": 15,
      "medium": 24,
      "large": 2,
      "xlarge": 0
    }
  }
]

В этом примере функция используется для разбиения объекта в элемент массива для каждой пары полей и значений.

SELECT
    p.name,
    ObjectToArray(p.quantities, "size", "quantity") AS quantitiesBySize
FROM
    products p
WHERE
    p.category = "sport-helmets"
[
  {
    "name": "Witalica helmet",
    "quantitiesBySize": [
      {
        "size": "small",
        "quantity": 15
      },
      {
        "size": "medium",
        "quantity": 24
      },
      {
        "size": "large",
        "quantity": 2
      },
      {
        "size": "xlarge",
        "quantity": 0
      }
    ]
  }
]

Замечания

  • Если входное значение не является допустимым объектом, результатом является undefined.

См. также