Начало работы
Подключение
Тесты производительности
Развёртывание
Использование данных
Загрузка данных
Миграция данных
Запрос данных
Управление кластерами
Обновление
Глобальное обслуживание
Масштабирование
Мониторинг
Безопасность
Лучшие практики
Технические принципы
Типы данных
Хранилище
Исполняющий движок
Потоковая обработка (Domino)
MARS3 Индексы
Расширения
Расширенные функции
Расширенный запрос
Федеративные запросы
Grafana
Резервное копирование и восстановление
Аварийное восстановление
Графовая база данных
Введение
Предложения
Функции
Расширенные темы
Руководство
Настройка производительности
Устранение неполадок
Инструменты
Параметры конфигурации
SQL-команда
Часто задаваемые вопросы
Предложение SET обновляет метки и свойства вершин и рёбер.
Примечание!
В YMatrix AGE базовое MPP-хранилище требует перемещения данных, что разбивает запрос на несколько срезов. Поскольку YMatrix допускает только один срез записи на транзакцию, одновременное использование нескольких операторов записи в одном запросе Cypher может вызвать ошибку:
ERROR: AssignTransactionId() called by Segment Reader process.
Поэтому минимизируйте одновременное применение нескольких операторов записи (например,CREATE,SET,REMOVE,MERGE) в рамках одного запроса Cypher.
Предложение SET, за которым не следует другое предложение, является завершающим. Когда запрос Cypher завершается завершающим предложением, функция cypher() не возвращает строк результата. Однако функция cypher() по-прежнему требует списка определений столбцов. Если запрос завершается завершающим предложением, укажите в списке фиктивный столбец — соответствующая переменная не будет содержать данных.
Чтобы задать свойство вершины или ребра, используйте SET.
SELECT *
FROM cypher('graph_name', $$
MATCH (v {name: 'Andres'})
SET v.surname = 'Taylor'
$$) AS (v agtype);
Запрос применяет изменение, но не возвращает строк.
| v |
|---|
| (0 строк) |
Чтобы обновить и вернуть одну вершину, используйте следующий запрос:
SELECT *
FROM cypher('graph_name', $$
MATCH (v {name: 'Andres'})
SET v.surname = 'Taylor'
RETURN v
$$) AS (v agtype);
Возвращает обновлённую вершину.
| v |
|---|
{id: 3; label: 'Person'; properties: {surname: "Taylor", name: "Andres", age: 36, hungry: true}}::vertex |
| (1 строка) |
Хотя стандартным способом удаления свойства является REMOVE, для этой цели можно использовать и SET — например, когда значение свойства берётся из параметра.
SELECT *
FROM cypher('graph_name', $$
MATCH (v {name: 'Andres'})
SET v.name = NULL
RETURN v
$$) AS (v agtype);
Возвращает вершину без свойства name.
| v |
|---|
{id: 3; label: 'Person'; properties: {surname: "Taylor", age: 36, hungry: true}}::vertex |
| (1 строка) |
Чтобы задать несколько свойств в одном запросе, перечислите присваивания через запятую.
SELECT *
FROM cypher('graph_name', $$
MATCH (v {name: 'Andres'})
SET v.position = 'Developer', v.surname = 'Taylor'
RETURN v
$$) AS (v agtype);
| v |
|---|
{"id": 281474976710661, "label": "", "properties": {"name": "Andres", "surname": "Taylor", "position": "Developer"}}::vertex |
| (1 строка) |
Для назначения свойств также допускается использование нескольких предложений SET.
Предпочтительно задавать несколько свойств в одном предложении
SET, а не распределять их по нескольким предложениямSET.
SELECT *
FROM cypher('graph_name', $$
MATCH (v {name: 'Andres'})
SET v.position = 'Developer'
SET v.surname = 'Taylor'
RETURN v
$$) AS (v agtype);
| v |
|---|
{"id": 281474976710661, "label": "", "properties": {"name": "Andres", "surname": "Taylor", "position": "Developer"}}::vertex |
| (1 строка) |