В этой главе дается полное описание различных типов функций в 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 или ОБА.
Synatx — shorttestPath (<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.