OrientDB - Функции
В этой главе дается полное описание различных типов функций в OrientDB. В следующей таблице определен список функций, сгруппированных по их функциональности.
Графические функции
Sr. No. | Название и описание функции |
---|---|
1 | Out(): Получает смежные исходящие вершины, начиная с текущей записи как Vertex. Syntax - out ([<label-1>] [, <label-n>] *) |
2 | In(): Получает смежные входящие вершины, начиная с текущей записи как Vertex. Syntax - в ([<label-1>] [, <label-n>] *) |
3 | Both(): Получает смежные исходящие и входящие вершины, начиная с текущей записи как Vertex. Syntax - оба ([<label1>] [, <label-n>] *) |
4 | outE(): Получает смежные исходящие ребра, начиная с текущей записи как Vertex. Syntax - outE ([<label1>] [, <label-n>] *) |
5 | inE(): Получает смежные входящие ребра, начиная с текущей записи как Vertex. Syntax - inE ([<label1>] [, <label-n>] *) |
6 | bothE(): Получает смежные исходящие и входящие ребра, начиная с текущей записи как Vertex. Syntax - bothE ([<label1>] [, <label-n>] *) |
7 | outV(): Получает исходящие вершины, начиная с текущей записи как Edge. Syntax - outV () |
8 | inV(): Получить входящие вершины из текущей записи как Edge. Syntax - inV () |
9 | traversedElement(): Возвращает пройденный элемент (ы) в командах перемещения. Syntax - traversedElement (<индекс> [, <элементы>]) |
10 | traversedVertex(): Возвращает пройденные вершины в командах перемещения. Syntax - traversedVertex (<индекс> [, <элементы>]) |
11 | traversedEdge(): Возвращает пройденную кромку (-и) в командах перемещения. Syntax - traversedEdge (<индекс> [, <элементы>]) |
12 | shortestPath(): Возвращает кратчайший путь между двумя вершинами. Направление может быть ВНЕ (по умолчанию), ВНУТРИ или ОБА. Synatx - shorttestPath (<sourceVertex>, <destinationVertex> [, <direction> [, <edgeClassName>]]) |
13 | dijkstra(): Возвращает самый дешевый путь между двумя вершинами, используя алгоритм Дейкстры. Syntax - dijkstra (<sourceVertex>, <destinationVertex>, <weightEdgeFieldName> [, <direction>]) |
Попробуйте использовать некоторые графические функции вместе со следующими запросами.
Выполните следующий запрос, чтобы получить все исходящие вершины из всех вершин транспортного средства.
orientdb {db = demo}>SELECT out() from Vehicle
Если вышеуказанный запрос выполнен успешно, вы получите следующий результат.
---+----------+---------
# | @class | out
---+----------+---------
0 | Vehicle | #11:2
1 | Vehicle | #13:1
2 | Vehicle | #13:4
---+----------+---------
Выполните следующий запрос, чтобы получить как входящие, так и исходящие вершины из вершины № 11: 3.
orientdb {db = demo}>SELECT both() FROM #11:3
Если вышеуказанный запрос выполнен успешно, вы получите следующий результат.
---+----------+--------+-------
# | @class | out | in
---+----------+--------+-------
0 | Vehicle | #13:2 | #10:2
---+----------+-------+-------
Математические функции
Sr. No. | Название и описание функции |
---|---|
1 | eval(): Оценивает выражение в кавычках (или двойных кавычках). Syntax - eval ('<выражение>') |
2 | min(): Возвращает минимальное значение. Если вызывается с более чем одним параметром, он возвращает минимальное значение аргумента между всеми аргументами. Syntax - min (<поле> [, <поле-n>] *) |
3 | max(): Возвращает максимальное значение. Если вызывается с более чем одним параметром, возвращает максимальное значение между всеми аргументами. Syntax - max (<поле> [, <поле-n>] *) |
4 | sum() Возвращает сумму всех возвращенных значений. Syntax - сумма (<поле>) |
5 | abs(): Возвращает абсолютное значение. Он работает с Integer, Long, Short, Double, Float, BigInteger, BigDecimal, null. Syntax - абс (<поле>) |
6 | avg(): Возвращает среднее значение. Syntax - avg (<поле>) |
7 | count(): Подсчитывает запись, соответствующую условию запроса. Если * не используется в качестве поля, запись будет засчитана только в том случае, если ее содержимое не равно нулю. Syntax - количество (<поле>) |
8 | mode(): Возвращает значение, которое встречается с наибольшей частотой. При вычислении пустые значения игнорируются. Syntax - режим (<поле>) |
9 | median(): Возвращает среднее значение или интерполированное значение, представляющее среднее значение после сортировки значений. При вычислении пустые значения игнорируются. Syntax - медиана (<поле>) |
10 | percentile(): Возвращает n-й процентиль. При вычислении значение NULL игнорируется. Syntax - процентиль (<поле> [, <квантиль-n>] *) |
11 | variance() Возвращает среднюю дисперсию: среднее квадратичное отклонение от среднего.
Syntax - дисперсия (<поле>) |
12 | stddev() Возвращает стандартное отклонение: меру разброса значений. При вычислении пустые значения игнорируются. Syntax - stddev (<поле>) |
Попробуйте выполнить некоторые математические функции, используя следующие запросы.
Выполните следующий запрос, чтобы получить сумму зарплат всех сотрудников.
orientdb {db = demo}>SELECT SUM(salary) FROM Employee
Если вышеуказанный запрос выполнен успешно, вы получите следующий результат.
---+----------+---------
# | @CLASS | sum
---+----------+---------
0 | null | 150000
---+----------+---------
Выполните следующий запрос, чтобы получить среднюю зарплату всех сотрудников.
orientdb {db = demo}>SELECT avg(salary) FROM Employee
Если вышеуказанный запрос выполнен успешно, вы получите следующий результат.
---+----------+---------
# | @CLASS | avg
---+----------+---------
0 | null | 25
---+----------+---------
Коллекции Функции
Sr. No. | Название и описание функции |
---|---|
1 | set(): Добавляет значение в набор. Если значение является коллекцией, то оно объединяется с набором, в противном случае добавляется <value>. Syntax - установить (<поле>) |
2 | map(): Добавляет значение к карте при первом создании карты. Если <value> - это карта, то она объединяется с картой, в противном случае пара <key> и <value> добавляется к карте как новая запись. Syntax - карта (<ключ>, <значение>) |
3 | ist(): Добавляет значение в список при первом создании списка. Если <value> - это коллекция, то она объединяется со списком, иначе <value> добавляется в список. Syntax - список (<поле>) |
4 | difference(): Работает как агрегатный или встроенный. Если передан только один аргумент, то выполняется агрегирование, в противном случае выполняется и возвращается РАЗНИЦА между коллекциями, полученными в качестве параметров. Syntax - разница (<поле> [, <поле-n>] *) |
5 | first(): Извлекает только первый элемент многозначных полей (массивов, коллекций и карт). Для типов без нескольких значений просто возвращает значение. Syntax - первый (<поле>) |
6 | intersect(): Работает как агрегатный или встроенный. Если передан только один аргумент, то агрегирует, в противном случае выполняет и возвращает ВЗАИМОДЕЙСТВИЕ коллекций, полученных в качестве параметров. Syntax - пересечь (<поле> [, <поле-n>] *) |
7 | distinct(): Извлекает только уникальные записи данных в зависимости от поля, указанного в качестве аргумента. Основное отличие от стандартного SQL DISTINCT заключается в том, что с OrientDB можно указать функцию со скобками и только одно поле. Syntax - отличное (<поле>) |
8 | expand(): Эта функция имеет два значения:
Syntax - развернуть (<поле>) |
9 | unionall(): Работает как агрегатный или встроенный. Если передан только один аргумент, то выполняется агрегирование, в противном случае выполняет и возвращает UNION всех коллекций, полученных в качестве параметров. Также работает без значений коллекции. Syntax - unionall (<field> [, <field-n>] *) |
10 | flatten(): Извлекает коллекцию в поле и использует ее как результат. Он устарел, используйте вместо него expand (). Syntax - сгладить (<поле>) |
11 | last(): Извлекает только последний элемент многозначных полей (массивов, коллекций и карт). Для типов без нескольких значений просто возвращает значение. Syntax - последний (<поле>) |
12 | symmetricDifference(): Работает как агрегатный или встроенный. Если передан только один аргумент, то агрегирует, в противном случае выполняет и возвращает СИММЕТРИЧНУЮ РАЗНИЦУ между коллекциями, полученными как параметры. Syntax - symricDifference (<field> [, <field-n>] *) |
Попробуйте использовать некоторые функции сбора, используя следующие запросы.
Выполните следующий запрос, чтобы получить набор учителей, преподающих 9-й класс.
orientdb {db = demo}>SELECT ID, set(teacher.id) AS teacherID from classess where class_id = 9
Если вышеуказанный запрос выполнен успешно, вы получите следующий результат.
---+----------+--------+--------------------------
# | @CLASS | id | TeacherID
---+----------+--------+--------------------------
0 | null | 9 | 1201, 1202, 1205, 1208
---+----------+-------+---------------------------
Разные функции
Sr. No. | Название и описание функции |
---|---|
1 | date(): Возвращает дату, форматирующую строку. <date-as-string> - это дата в строковом формате, а <format> - это формат даты в соответствии с этими правилами. Syntax - дата (<дата-как-строка> [<формат>] [, <часовой пояс>]) |
2 | sysdate(): Возвращает текущую дату и время. Syntax - sysdate ([<формат>] [, <часовой пояс>]) |
3 | format(): Форматирует значение, используя соглашения String.format (). Syntax - формат (<format> [, <arg1>] (, <arg-n>] *. Md) |
4 | distance(): Возвращает расстояние между двумя точками земного шара, используя алгоритм Хаверсина. Координаты должны быть градусами. Syntax - расстояние (<x-field>, <y-field>, <x-value>, <y-value>) |
5 | ifnull(): Возвращает переданное поле / значение (или необязательный параметр return_value_if_not_null). Если поле / значение не равно нулю, возвращается return_value_if_null. Syntax - ifnull (<field | value>, <return_value_if_null> [, <return_value_if_not_null>] (, <field & .md # 124; value>] *) |
6 | coalesce(): Возвращает первое поле / значение не нулевой параметр. Если ни одно поле / значение не равно нулю, возвращается ноль. Syntax - coalesce (<поле | значение> [, <поле-n | значение-n>] *) |
7 | uuid(): Создает UUID как 128-битное значение, используя вариант Лича-Зальца. Syntax - uuid () |
8 | if(): Оценивает условие (первые параметры) и возвращает второй параметр, если условие истинно, и третий - в противном случае. Syntax - if (<выражение>, <результат-если-истина>, <результат-если-ложь>) |
Попробуйте некоторые функции Misc, используя следующие запросы.
Выполните следующий запрос, чтобы узнать, как выполнить выражение if.
orientdb {db = demo}> SELECT if(eval("name = 'satish'"), "My name is satish",
"My name is not satish") FROM Employee
Если вышеуказанный запрос выполнен успешно, вы получите следующий результат.
----+--------+-----------------------
# |@CLASS | IF
----+--------+-----------------------
0 |null |My name is satish
1 |null |My name is not satish
2 |null |My name is not satish
3 |null |My name is not satish
4 |null |My name is not satish
----+--------+------------------------
Выполните следующий запрос, чтобы получить системную дату.
orientdb {db = demo}> SELECT SYSDATE() FROM Employee
Если вышеуказанный запрос выполнен успешно, вы получите следующий результат.
----+--------+-----------------------
# |@CLASS | SYSDATE
----+--------+-----------------------
0 |null |2016-02-10 12:05:06
1 |null |2016-02-10 12:05:06
2 |null |2016-02-10 12:05:06
3 |null |2016-02-10 12:05:06
4 |null |2016-02-10 12:05:06
----+--------+------------------------
Тщательно используя эту функцию, вы можете легко манипулировать данными OrientDB.