OrientDB教程

OrientDB 函数

本章讲解了OrientDB中不同类型函数的完整参考。下表定义了按功能分类的功能列表。

图形函数

用于操作图形数据的函数。

Sr.No. 函数名称和描述
1
Out():
获取从当前记录开始的相邻输出顶点作为顶点。
语法-out([<label-1>][,<label-n>]*)
2
In():
获取从当前记录开始的相邻传入顶点作为顶点。
语法-in([<label-1>][,<label-n>]*)
3
Both():
获取从当前记录开始的相邻出站和入站顶点作为顶点。
语法-both([<label1>][,<label-n>]*)
4
outE():
获取从当前记录开始的相邻出边作为顶点。
语法-outE([<label1>][,<label-n>]*)
5
inE():
获取从当前记录开始的相邻传入边作为顶点。
语法-inE([<label1>][,<label-n>]*)
6
bothE():
获取从当前记录开始的相邻传出和传入边作为顶点。
语法-bothE([<label1>][,<label-n>]*)
7
outV():
获取从当前记录开始的输出顶点作为边缘。
语法-outV()
8
inV():
从当前记录中获取传入的顶点作为边。
语法 − inV()
9
traversedElement():
返回遍历命令中遍历的元素。
语法 − traversedElement(<index> [,<items>])
10
traversedVertex():
返回遍历命令中的遍历顶点。
语法 − traversedVertex(<index> [,<items>])
11
traversedEdge():
返回遍历命令中的遍历边。
语法 − traversedEdge(<index> [,<items>])
12
shortestPath():
返回两个顶点之间的最短路径。方向可以是 OUT(默认)、IN 或 BOTH。
Synatx-shortestPath( <sourceVertex>, <destinationVertex> [, <direction> [, <edgeClassName>]])
13
dijkstra():
使用 Dijkstra 算法返回两个顶点之间最便宜的路径。
语法 − 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():
计算引号(或双引号)之间的表达式。
语法-eval(' <表达式> ')
2
min():
返回最小值。如果使用多个参数调用,则返回所有参数之间的最小参数值。
语法 − min(<field> [, <field-n>]* )
3
max():
返回最大值。如果使用多个参数调用,则返回所有参数之间的最大值。
语法 − max(<field> [, <field-n>]* )
4
sum()
返回所有返回值的总和。
语法-sum( <字段> )
5
abs():
返回绝对值。它适用于 Integer、Long、Short、Double、Float、BigInteger、BigDecimal、null。
语法-abs(<field>)
6
avg():
返回平均值。
语法 − avg(<field> )
7
count():
统计符合查询条件的记录。如果不使用 * 作为字段,则只有当内容不为空时才会对记录进行计数。
语法 − count(<field>)
8
mode():
返回出现频率最高的值。计算中忽略空值。
语法-mode(<field>)
9
median():
返回中间值或表示对值排序后的中间值的内插值。计算中忽略空值。
语法-median(<field>)
10
percentile():
返回第 n 个百分位数。计算中忽略空值。
语法-percentile(<field> [, <quantile-n>]*)
11
variance()
返回中间方差:均值的平方差的平均值。
语法-variance(<field>)
12
stddev()
返回标准偏差:衡量值分布的程度。计算中忽略空值。
语法-stddev(<field>)
使用以下查询尝试一些数学函数。
执行以下查询以获取所有员工的工资总和。
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>。
语法 − set(<field>)
2
map():
在第一次创建地图时向地图添加一个值。如果 <value> 是地图,然后它与映射合并,否则 和 <value> 对作为新条目添加到映射中。
语法-map( , <value> >)
3
ist():
在第一次创建列表时向列表添加一个值。如果 <value> 是一个集合,则将其与列表合并,否则将 <value> 添加到列表中。
语法 − list(<field>)
4
difference():
作为聚合或内联工作。如果只传递一个参数,则聚合,否则执行,并返回作为参数接收的集合之间的差异。
语法-difference(<field> [,<field-n>]*)
5
first():
仅检索多值字段(数组、集合和映射)的第一项。对于非多值类型,只返回值。
语法-first(<field>)
6
intersect():
作为聚合或内联工作。如果只传递一个参数,则聚合,否则执行并返回作为参数接收的集合的交互。
语法-intersect(<field> [,<field-n>]*)
7
distinct():
根据您指定为参数的字段仅检索唯一的数据条目。与标准 SQL DISTINCT 相比的主要区别在于,OrientDB 是一个带括号的函数,并且只能指定一个字段。
语法-distinct(<field>)
8
expand():
这个函数有两个含义-
在集合字段上使用时,它会展开该字段中的集合并将其用作结果。 在链接 (RID) 字段上使用时,它会扩展该链接指向的文档。
语法-expand(<field>)
9
unionall():
作为聚合或内联工作。如果只传递一个参数,则聚合,否则执行并返回作为参数接收的所有集合的 UNION。也适用于没有集合值。
语法-unionall(<field> [,<field-n>]*)
10
flatten():
提取字段中的集合并将其用作结果。已弃用,请改用 expand()。
语法-flatten(<field>)
11
last():
仅检索多值字段(数组、集合和映射)的最后一项。对于非多值类型,只返回值。
语法-last(<field>)
12
symmetricDifference():
作为聚合或内联工作。如果只传递一个参数,则聚合,否则执行并返回作为参数接收的集合之间的对称差异。
语法 − symmetricDifference(<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> 是遵循这些规则的日期格式。
语法-date( <date-as-string> [ <格式> ] [, <时区> ] )
2
sysdate():
返回当前日期和时间。
语法 − sysdate( [ <格式> ] [, <时区> ] )
3
format():
使用 String.format() 约定格式化值。
语法 − 格式( <格式> [, ](,]*.md)
4
distance():
使用Haversine算法返回地球上两点之间的距离。坐标必须是度数。
语法 − distance( <x-field>, <y-field>, <x-value>, <y-value> )
5
ifnull():
返回传递的字段/值(或可选参数 return_value_if_not_null)。如果字段/值不为空,则返回 return_value_if_null。
<return_value_if_null> [,<return_value_if_not_null>](,<field&.md#124;value>]*)
6
coalesce():
返回第一个字段/值非空参数。如果没有字段/值不为空,则返回空值。
语法-Coalesce(<field|value> [, <field-n|value-n>]*)
7
uuid():
使用 Leach-Salz 变体生成一个 128 位值的 UUID。
语法-uuid()
8
if():
评估一个条件(第一个参数),如果条件为真则返回第二个参数,否则返回第三个参数。
语法 − if(<expression>, <result-if-true>, <result-if-false>)
使用以下查询尝试一些 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 数据。
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4