Начало работы
Подключение
Тесты производительности
Развёртывание
Использование данных
Загрузка данных
Миграция данных
Запрос данных
Управление кластерами
Обновление
Глобальное обслуживание
Масштабирование
Мониторинг
Безопасность
Лучшие практики
Технические принципы
Типы данных
Хранилище
Исполняющий движок
Потоковая обработка (Domino)
MARS3 Индексы
Расширения
Расширенные функции
Расширенный запрос
Федеративные запросы
Grafana
Резервное копирование и восстановление
Аварийное восстановление
Графовая база данных
Введение
Предложения
Функции
Расширенные темы
Руководство
Настройка производительности
Устранение неполадок
Инструменты
Параметры конфигурации
SQL-команда
Часто задаваемые вопросы
В части RETURN запроса указывается, какие элементы совпавшего шаблона должны быть выведены. Вывод может включать значения типа agtype, вершины, рёбра или свойства.
Чтобы вернуть вершину, укажите её в предложении RETURN.
SELECT *
FROM cypher('graph_name', $$
MATCH (n {name: 'B'})
RETURN n
$$) AS (n agtype);
Возвращает вершину.
| n |
|---|
{id: 0; label: ''; properties: {name: 'B'}}::vertex |
| (1 строка) |
Чтобы вернуть ребро, связанное с n, включите его непосредственно в список RETURN.
SELECT *
FROM cypher('graph_name', $$
MATCH (n)-[r:KNOWS]->()
WHERE n.name = 'A'
RETURN r
$$) AS (r agtype);
Возвращает отношение.
| r |
|---|
{id: 2; startid: 0; endid: 1; label: 'KNOWS'; properties: {}}::edge |
| (1 строка) |
Чтобы вернуть свойство, используйте нотацию с точкой.
SELECT *
FROM cypher('graph_name', $$
MATCH (n {name: 'A'})
RETURN n.name
$$) AS (name agtype);
Возвращает значение свойства name.
| name |
|---|
'A' |
| (1 строка) |
Используйте *, чтобы вернуть все вершины, рёбра и пути, найденные запросом.
SELECT *
FROM cypher('graph_name', $$
MATCH (a {name: 'A'})-[r]->(b)
RETURN *
$$) AS (a agtype, b agtype, r agtype);
Возвращает обе вершины и ребро, использованные в шаблоне.
| a | b | r |
|---|---|---|
{"id": 281474976710659, "label": "", "properties": {"age": 55, "name": "A", "happy": "Yes!"}}::vertex |
{"id": 1125899906842625, "label": "BLOCKS", "end_id": 281474976710660, "start_id": 281474976710659, "properties": {}}::edge |
{"id": 281474976710660, "label": "", "properties": {"name": "B"}}::vertex |
{"id": 281474976710659, "label": "", "properties": {"age": 55, "name": "A", "happy": "Yes!"}}::vertex |
{"id": 1407374883553281, "label": "KNOWS", "end_id": 281474976710660, "start_id": 281474976710659, "properties": {}}::edge |
{"id": 281474976710660, "label": "", "properties": {"name": "B"}}::vertex |
| (2 строки) |
Чтобы использовать имена переменных, содержащие не буквенно-цифровые символы, заключите их в обратные кавычки (`).
SELECT *
FROM cypher('graph_name', $$
MATCH (`This isn't a common variable`)
WHERE `This isn't a common variable`.name = 'A'
RETURN `This isn't a common variable`.happy
$$) AS (happy agtype);
Возвращает свойство happy вершины с именем "A".
| happy |
|---|
"Yes!" |
| (1 строка) |
Чтобы присвоить возвращаемому полю имя, отличное от выражения, укажите псевдоним в списке определений столбцов.
SELECT *
FROM cypher('graph_name', $$
MATCH (n {name: 'A'})
RETURN n.name
$$) AS (objects_name agtype);
Возвращает свойство name вершины, но переименовывает выходной столбец.
| objects_name |
|---|
'A' |
| (1 строка) |
Если свойство может отсутствовать, его значение считается NULL.
SELECT *
FROM cypher('graph_name', $$
MATCH (n)
RETURN n.age
$$) AS (age agtype);
Возвращает свойство age, если оно присутствует; в противном случае — NULL.
| age |
|---|
55 |
NULL |
| (2 строки) |
Любое выражение — литералы, предикаты, свойства, функции или их комбинации — может находиться в RETURN.
SELECT *
FROM cypher('graph_name', $$
MATCH (a)
RETURN a.age > 30, 'I''m a literal', id(a)
$$) AS (older_than_30 agtype, literal agtype, id agtype);
Возвращает предикат, строковый литерал и вызов функции с аргументом, заданным выражением шаблона.
| older_than_30 | literal | id |
|---|---|---|
true |
'I''m a literal' |
1 |
| (1 строка) |
Ключевое слово DISTINCT возвращает только уникальные строки на основе выбранных выходных полей.
Примечание!
Хотя у каждой вершины уникаленid,DISTINCTнаиболее актуален, когда одна и та же вершина совпадает несколько раз через разные рёбра.
Например:
(A)-[:KNOWS]->(B)и(A)-[:LIKES]->(B).
ВыполнениеMATCH (a {name: 'A'})-[]->(b) RETURN bсовпадёт сBдважды — один раз черезKNOWS, второй — черезLIKES, — и вернёт две одинаковые строки.
СDISTINCTвершинаBпоявится лишь один раз.
SELECT *
FROM cypher('graph_name', $$
MATCH (a {name: 'A'})-[]->(b)
RETURN DISTINCT b
$$) AS (b agtype);
Возвращает вершину с именем "B", но только один раз.
| b |
|---|
{id: 1; label: ''; properties: {name: 'B'}}::vertex |
| (1 строка) |