Учебники

OrientDB — Функции

В этой главе дается полное описание различных типов функций в OrientDB. Следующая таблица определяет список функций, которые классифицируются по их функциональности.

Функции графика

Из():

Получает смежные исходящие вершины, начиная с текущей записи как Vertex.

Синтаксис — out ([<label-1>] [, <label-n>] *)

В():

Получает смежные входящие вершины, начиная с текущей записи как Vertex.

Синтаксис — в ([<label-1>] [, <label-n>] *)

И то и другое():

Получает смежные исходящие и входящие вершины, начиная с текущей записи как Vertex.

Синтаксис — оба ([<label1>] [, <label-n>] *)

Oute ():

Получает смежные исходящие ребра, начиная с текущей записи как Vertex.

Синтаксис — outE ([<label1>] [, <label-n>] *)

в Е ():

Получает смежные входящие ребра, начиная с текущей записи как Vertex.

Синтаксис — inE ([<label1>] [, <label-n>] *)

Боте ():

Получает смежные исходящие и входящие ребра, начиная с текущей записи как Vertex.

Синтаксис — BothE ([<label1>] [, <label-n>] *)

OUTV ():

Получает исходящие вершины, начиная с текущей записи как Edge.

Синтаксис — outV ()

ОБР ():

Получить входящие вершины из текущей записи как Edge.

Синтаксис — inV ()

traversedElement ():

Возвращает пройденный элемент (ы) в командах перемещения.

Синтаксис — traversedElement (<индекс> [, <элементы>])

traversedVertex ():

Вернуть пройденную вершину (и) в командах перемещения.

Синтаксис — traversedVertex (<индекс> [, <элементы>])

traversedEdge ():

Возвращает пройденный край (ы) в командах перемещения.

Синтаксис — traversedEdge (<индекс> [, <элементы>])

shortestPath ():

Возвращает кратчайший путь между двумя вершинами. Направление может быть OUT (по умолчанию), IN или ОБА.

SynatxshorttestPath (<sourceVertex>, <destinationVertex> [, <direction> [, <edgeClassName>]]))

Дейкстра ():

Возвращает самый дешевый путь между двумя вершинами, используя алгоритм Дейкстры.

Синтаксис — 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   
 ---+----------+-------+-------

Математические функции

Eval ():

Оценивает выражение между кавычками (или двойными кавычками).

Синтаксис — eval (‘<выражение>’)

мин ():

Возвращает минимальное значение. Если вызывается с более чем одним параметром, он возвращает минимальное значение аргумента между всеми аргументами.

Синтаксис — мин. (<Поле> [, <поле-n>] *)

Максимум():

Возвращает максимальное значение. Если вызывается с более чем одним параметром, возвращается максимальное значение между всеми аргументами.

Синтаксис — max (<поле> [, <поле-n>] *)

сумма ()

Возвращает сумму всех возвращенных значений.

Синтаксис — сумма (<поле>)

абс ():

Возвращает абсолютное значение. Работает с Integer, Long, Short, Double, Float, BigInteger, BigDecimal, null.

Синтаксис — abs (<поле>)

ср ():

Возвращает среднее значение.

Синтаксис — avg (<поле>)

кол():

Подсчитывает запись, которая соответствует условию запроса. Если * не используется в качестве поля, то запись будет учитываться, только если содержимое не равно нулю.

Синтаксис — количество (<поле>)

Режим():

Возвращает значение, которое встречается с наибольшей частотой. Нули игнорируются при расчете.

Синтаксис — режим (<поле>)

медиана ():

Возвращает среднее значение или интерполированное значение, представляющее среднее значение после сортировки значений. Нули игнорируются при расчете.

Синтаксис — медиана (<поле>)

процентиль ():

Возвращает n-й процентиль. Нуль игнорируется в расчете.

Синтаксис — процентиль (<поле> [, <квантиль-n>] *)

дисперсия ()

Возвращает среднюю дисперсию: среднее значение квадрата разницы от среднего.

Синтаксис — дисперсия (<поле>)

StdDev ()

Возвращает стандартное отклонение: мера разброса значений. Нули игнорируются при расчете.

Синтаксис — 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 
---+----------+--------- 

Коллекции Функции

задавать():

Добавляет значение в набор. Если значение является коллекцией, то оно объединяется с набором, в противном случае добавляется <значение>.

Синтаксис — установить (<поле>)

карта():

Добавляет значение к карте при первом создании карты. Если <значение> является картой, то она объединяется с картой, в противном случае пара <ключ> и <значение> добавляется на карту как новая запись.

Синтаксис — карта (<ключ>, <значение>)

IST ():

Добавляет значение в список при первом создании списка. Если <значение> является коллекцией, то она объединяется со списком, в противном случае <значение> добавляется в список.

Синтаксис — список (<поле>)

разность ():

Работает как совокупный или встроенный. Если передан только один аргумент, то агрегирует, в противном случае выполняется и возвращает РАЗНИЦУ между коллекциями, полученными в качестве параметров.

Синтаксис — разница (<поле> [, <поле-n>] *)

первый():

Извлекает только первый элемент многозначных полей (массивы, коллекции и карты). Для не многозначных типов просто возвращает значение.

Синтаксис — первый (<поле>)

пересекаются ():

Работает как совокупный или встроенный. Если передан только один аргумент, то агрегирует, в противном случае выполняет и возвращает ВЗАИМОДЕЙСТВИЕ коллекций, полученных в качестве параметров.

Синтаксис — пересечение (<field> [, <field-n>] *)

различны ():

Извлекает только уникальные записи данных в зависимости от поля, которое вы указали в качестве аргумента. Основное отличие от стандартного SQL DISTINCT состоит в том, что с OrientDB можно указывать функцию с круглыми скобками и только одно поле.

Синтаксис — отличный (<поле>)

развернуть ():

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

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

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

Синтаксис — развернуть (<поле>)

unionall ():

Работает как совокупный или встроенный. Если передан только один аргумент, то агрегирует, в противном случае выполняется и возвращает UNION всех коллекций, полученных в качестве параметров. Также работает без сбора значений.

Синтаксис — unionall (<поле> [, <поле-n>] *)

расплющить ():

Извлекает коллекцию в поле и использует ее как результат. Это устарело, используйте взамен expand ().

Синтаксис — выравнивание (<поле>)

прошлой():

Извлекает только последний элемент многозначных полей (массивы, коллекции и карты). Для не многозначных типов просто возвращает значение.

Синтаксис — последний (<поле>)

симметрическая разность ():

Работает как совокупный или встроенный. Если передается только один аргумент, то агрегирует, в противном случае выполняет и возвращает СИММЕТРИЧЕСКУЮ РАЗНИЦУ между коллекциями, полученными в качестве параметров.

Синтаксис —mmetricDifference (<поле> [, <поле-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 
---+----------+-------+---------------------------

Разные Функции

Дата():

Возвращает дату форматирования строки. <date-as-string> — это дата в строковом формате, а <format> — это формат даты, соответствующий этим правилам.

Синтаксис — дата (<дата-как-строка> [<формат>] [, <часовой пояс>])

SYSDATE ():

Возвращает текущую дату и время.

Синтаксис — sysdate ([<format>] [, <часовой пояс>])

формат():

Форматирует значение с использованием соглашений String.format ().

Синтаксис — формат (<формат> [, <arg1>] (, <arg-n>] *. Md)

расстояние():

Возвращает расстояние между двумя точками на земном шаре с использованием алгоритма Хаверсайна. Координаты должны быть градусами.

Синтаксис — расстояние (<x-field>, <y-field>, <x-value>, <y-value>)

IFNULL ():

Возвращает переданное поле / значение (или необязательный параметр return_value_if_not_null). Если поле / значение не нулевое, оно возвращает return_value_if_null.

Синтаксис — ifnull (<поле | значение>, <return_value_if_null> [, <return_value_if_not_null>] (, <поле & .md # 124; значение>] *)

сливаться ():

Возвращает первое поле / значение, а не нулевой параметр. Если никакое поле / значение не равно нулю, возвращает ноль.

Синтаксис coalesce (<поле | значение> [, <поле-n | значение-n>] *)

UUID ():

Генерирует UUID как 128-битное значение, используя вариант Лича-Зальца.

Синтаксис — uuid ()

если():

Оценивает условие (первые параметры) и возвращает второй параметр, если условие истинно, в противном случае — третий.

Синтаксис — if (<expression>, <result-if-true>, <result-if-false>)

Попробуйте некоторые дополнительные функции, используя следующие запросы.

Выполните следующий запрос, чтобы узнать, как выполнить выражение 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.