Преобразование project
Преобразование project выполняет проекцию в смысле реляционной алгебры: создаёт поток новых объектов, содержащих выбранные поля исходных данных. Скопированные поля можно переименовать. Не путайте это преобразование с картографическими проекциями.
Параметры преобразования
| Свойство | Тип | Описание |
|---|---|---|
| fields | Field[ ] | Поля данных, которые нужно скопировать. Если не заданы, копируются все поля с исходными именами. |
| as | String[ ] | Имена соответствующих выходных полей для элементов массива fields. |
Использование
{"type": "project", "fields": ["foo", "bar"]}
Создаёт поток объектов только с полями "foo" и "bar".
{"type": "project", "fields": ["foo", "bar"], "as": ["a", "b"]}
Создаёт поток объектов с полями "a" и "b", в которые записаны значения исходных полей "foo" и "bar" соответственно.
project также извлекает вложенные свойства. Например, пусть есть следующие данные:
[
{"foo": {"a": 5, "b": "abc"}, "bar": 0},
{"foo": {"a": 6, "b": "def"}, "bar": 1},
{"foo": {"a": 7, "b": "ghi"}, "bar": 2}
]
Чтобы перенести поле "bar" и вложенные поля "a" и "b" в новые объекты, примените преобразование:
{
"type": "project",
"fields": ["bar", "foo.a", "foo.b"],
"as": ["bar", "a", "b"]
}
Результат:
[
{"bar":0, "a":5, "b":"abc"},
{"bar":1, "a":6, "b":"def"},
{"bar":2, "a":7, "b":"ghi"}
]