Начало работы
Подключение
Тесты производительности
Развёртывание
Использование данных
Загрузка данных
Миграция данных
Запрос данных
Управление кластерами
Обновление
Глобальное обслуживание
Масштабирование
Мониторинг
Безопасность
Лучшие практики
Технические принципы
Типы данных
Хранилище
Исполняющий движок
Потоковая обработка (Domino)
MARS3 Индексы
Расширения
Расширенные функции
Расширенный запрос
Федеративные запросы
Grafana
Резервное копирование и восстановление
Аварийное восстановление
Графовая база данных
Введение
Предложения
Функции
Расширенные темы
Руководство
Настройка производительности
Устранение неполадок
Инструменты
Параметры конфигурации
SQL-команда
Часто задаваемые вопросы
SELECT * FROM cypher('graph_name', $$
CREATE (:Person {name: 'John'}),
(:Person {name: 'Jeff'}),
(:Person {name: 'Joan'}),
(:Person {name: 'Bill'})
$$) AS (result agtype);
Performs a case-sensitive prefix search on strings.
SELECT * FROM cypher('graph_name', $$
MATCH (v:Person)
WHERE v.name STARTS WITH "J"
RETURN v.name
$$) AS (names agtype);
Result
| names |
|---|
| "John" |
SELECT * FROM cypher('graph_name', $$
CREATE (:Person {name: 'John'}),
(:Person {name: 'Jeff'}),
(:Person {name: 'Joan'}),
(:Person {name: 'Bill'})
$$) AS (result agtype);
Выполняет регистрозависимый поиск по префиксу строки.
SELECT * FROM cypher('graph_name', $$
MATCH (v:Person)
WHERE v.name STARTS WITH "J"
RETURN v.name
$$) AS (names agtype);
Результат
| names |
|---|
| "John" |
| "Jeff" |
| "Joan" |
| 3 строки |
Выполняет регистрозависимый поиск подстроки в строке.
SELECT * FROM cypher('graph_name', $$
MATCH (v:Person)
WHERE v.name CONTAINS "o"
RETURN v.name
$$) AS (names agtype);
Результат
| names |
|---|
| "John" |
| "Joan" |
| 2 строки |
Выполняет регистрозависимый поиск по суффиксу строки.
SELECT * FROM cypher('graph_name', $$
MATCH (v:Person)
WHERE v.name ENDS WITH "n"
RETURN v.name
$$) AS (names agtype);
Результат
| names |
|---|
| "John" |
| "Joan" |
| 2 строки |
AGE поддерживает регулярные выражения POSIX с использованием оператора =~, как описано в документации PostgreSQL по регулярным выражениям POSIX. По умолчанию оператор =~ регистрозависим.
Если в шаблоне отсутствуют специальные символы регулярных выражений, оператор =~ ведёт себя идентично оператору =.
SELECT * FROM cypher('graph_name', $$
MATCH (v:Person)
WHERE v.name =~ 'John'
RETURN v.name
$$) AS (names agtype);
Результат
| names |
|---|
| "John" |
| 1 строка |
Добавьте префикс (?i) к шаблону для выполнения регистронезависимого поиска.
SELECT * FROM cypher('graph_name', $$
MATCH (v:Person)
WHERE v.name =~ '(?i)JoHn'
RETURN v.name
$$) AS (names agtype);
Результат
| names |
|---|
| "John" |
| 1 строка |
.Символ . соответствует любому одиночному символу.
SELECT * FROM cypher('graph_name', $$
MATCH (v:Person)
WHERE v.name =~ 'Jo.n'
RETURN v.name
$$) AS (names agtype);
Результат
| names |
|---|
| "John" |
| "Joan" |
| 2 строки |
*Квантификатор * соответствует нулю или более вхождений предшествующего символа.
SELECT * FROM cypher('graph_name', $$
MATCH (v:Person)
WHERE v.name =~ 'Johz*n'
RETURN v.name
$$) AS (names agtype);
Результат
| names |
|---|
| "John" |
| 1 строка |
+Квантификатор + соответствует одному или более вхождениям предшествующего символа.
SELECT * FROM cypher('graph_name', $$
MATCH (v:Person)
WHERE v.name =~ 'Bil+'
RETURN v.name
$$) AS (names agtype);
Результат
| names |
|---|
| "Bill" |
| 1 строка |
. и *Символы . и * можно комбинировать для соответствия остатку строки.
SELECT * FROM cypher('graph_name', $$
MATCH (v:Person)
WHERE v.name =~ 'J.*'
RETURN v.name
$$) AS (names agtype);
Результат
| names |
|---|
| "John" |
| "Jeff" |
| "Joan" |
| 3 строки |
В следующей таблице приведён приоритет операторов в AGE от самого высокого до самого низкого:
| Приоритет | Оператор | Описание |
|---|---|---|
| 1 | . |
Доступ к свойству |
| 2 | [] |
Индексация карт и списков |
() |
Вызов функции | |
| 3 | STARTS WITH |
Регистрозависимое сравнение по префиксу строки |
ENDS WITH |
Регистрозависимое сравнение по суффиксу строки | |
CONTAINS |
Регистрозависимое сравнение по подстроке строки | |
=~ |
Сравнение с регулярным выражением | |
| 4 | - |
Унарный минус |
| 5 | IN |
Проверка наличия элемента в списке |
IS NULL |
Проверка значения на NULL |
|
IS NOT NULL |
Проверка значения на ненулевое значение | |
| 6 | ^ |
Возведение в степень |
| 7 | * / % |
Умножение, деление, остаток от деления |
| 8 | + - |
Сложение и вычитание |
| 9 | = <> |
Равенство и неравенство (≠) |
< <= |
Меньше и меньше или равно | |
> >= |
Больше и больше или равно | |
| 10 | NOT |
Логическое отрицание |
| 11 | AND |
Логическая конъюнкция |
| 12 | OR |
Логическая дизъюнкция |
| "Jeff" | ||
| "Joan" | ||
| 3 rows |
Performs a case-sensitive substring search on strings.
SELECT * FROM cypher('graph_name', $$
MATCH (v:Person)
WHERE v.name CONTAINS "o"
RETURN v.name
$$) AS (names agtype);
Result
| names |
|---|
| "John" |
| "Joan" |
| 2 rows |
Performs a case-sensitive suffix search on strings.
SELECT * FROM cypher('graph_name', $$
MATCH (v:Person)
WHERE v.name ENDS WITH "n"
RETURN v.name
$$) AS (names agtype);
Result
| names |
|---|
| "John" |
| "Joan" |
| 2 rows |
AGE supports POSIX regular expressions using the =~ operator, as documented in the PostgreSQL POSIX Regular Expression documentation. By default, =~ is case-sensitive.
When no special regex characters are present, =~ behaves identically to =.
SELECT * FROM cypher('graph_name', $$
MATCH (v:Person)
WHERE v.name =~ 'John'
RETURN v.name
$$) AS (names agtype);
Result
| names |
|---|
| "John" |
| 1 row |
Prepend (?i) to the pattern to perform a case-insensitive match.
SELECT * FROM cypher('graph_name', $$
MATCH (v:Person)
WHERE v.name =~ '(?i)JoHn'
RETURN v.name
$$) AS (names agtype);
Result
| names |
|---|
| "John" |
| 1 row |
. WildcardThe . matches any single character.
SELECT * FROM cypher('graph_name', $$
MATCH (v:Person)
WHERE v.name =~ 'Jo.n'
RETURN v.name
$$) AS (names agtype);
Result
| names |
|---|
| "John" |
| "Joan" |
| 2 rows |
* QuantifierThe * quantifier matches zero or more occurrences of the preceding character.
SELECT * FROM cypher('graph_name', $$
MATCH (v:Person)
WHERE v.name =~ 'Johz*n'
RETURN v.name
$$) AS (names agtype);
Result
| names |
|---|
| "John" |
| 1 row |
+ QuantifierThe + quantifier matches one or more occurrences of the preceding character.
SELECT * FROM cypher('graph_name', $$
MATCH (v:Person)
WHERE v.name =~ 'Bil+'
RETURN v.name
$$) AS (names agtype);
Result
| names |
|---|
| "Bill" |
| 1 row |
. and *The . and * can be combined to match the remainder of a string.
SELECT * FROM cypher('graph_name', $$
MATCH (v:Person)
WHERE v.name =~ 'J.*'
RETURN v.name
$$) AS (names agtype);
Result
| names |
|---|
| "John" |
| "Jeff" |
| "Joan" |
| 3 rows |
The following table lists operator precedence in AGE, from highest to lowest:
| Precedence | Operator | Description |
|---|---|---|
| 1 | . |
Property access |
| 2 | [] |
Map and list subscripting |
() |
Function invocation | |
| 3 | STARTS WITH |
Case-sensitive string prefix match |
ENDS WITH |
Case-sensitive string suffix match | |
CONTAINS |
Case-sensitive string substring match | |
=~ |
Regular expression match | |
| 4 | - |
Unary minus |
| 5 | IN |
Checks whether an element exists in a list |
IS NULL |
Tests whether a value is NULL |
|
IS NOT NULL |
Tests whether a value is not NULL |
|
| 6 | ^ |
Exponentiation |
| 7 | * / % |
Multiplication, division, modulo |
| 8 | + - |
Addition and subtraction |
| 9 | = <> |
Equality and inequality (≠) |
< <= |
Less-than and less-than-or-equal | |
> >= |
Greater-than and greater-than-or-equal | |
| 10 | NOT |
Logical negation |
| 11 | AND |
Logical conjunction |
| 12 | OR |
Logical disjunction |