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():

Эта функция имеет два значения:

  • При использовании в поле коллекции он разворачивает коллекцию в поле и использует ее как результат.

  • При использовании в поле ссылки (RID) расширяет документ, на который указывает эта ссылка.

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.