OrientDB 教程

OrientDB 主页 OrientDB 概述 OrientDB 下载安装和环境配置 OrientDB 基本概念 OrientDB 数据类型 OrientDB 控制台模式

OrientDB 数据库命令

OrientDB 创建数据库 OrientDB 更改数据库 OrientDB 备份数据库 OrientDB 恢复数据库 OrientDB 连接数据库 OrientDB 断开数据库 OrientDB 信息数据库 OrientDB 列出数据库 OrientDB 冻结数据库 OrientDB 释放数据库 OrientDB 配置数据库 OrientDB 导出数据库 OrientDB 导入数据库 OrientDB 提交数据库 OrientDB 回滚数据库 OrientDB 优化数据库 OrientDB 删除数据库

OrientDB 记录命令

OrientDB 插入记录 OrientDB 显示记录 OrientDB 加载记录 OrientDB 重新加载记录 OrientDB 导出记录 OrientDB 更新记录 OrientDB 截断记录 OrientDB 删除记录

OrientDB 类命令

OrientDB 创建类 OrientDB 更改类 OrientDB 截断类 OrientDB 删除类

OrientDB 集群命令

OrientDB 创建集群 OrientDB 更改群集 OrientDB 截断群集 OrientDB 删除群集

OrientDB 属性命令

OrientDB 创建属性 OrientDB 更改属性 OrientDB 删除属性

OrientDB 顶点命令

OrientDB 创建顶点 OrientDB 移动顶点 OrientDB 删除顶点

OrientDB 边命令

OrientDB 创建边 OrientDB 更新边 OrientDB 删除边

OrientDB高级概念

OrientDB 函数 OrientDB 序列 OrientDB 索引 OrientDB 事务 OrientDB 钩子 OrientDB 缓存 OrientDB 日志 OrientDB 性能调优 OrientDB 升级 OrientDB 安全 OrientDB Studio

OrientDB 接口

OrientDB Java 接口 OrientDB Python 接口

OrientDB 有用资源

OrientDB 快速指南 OrientDB 有用资源 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():

从当前记录开始获取传出的顶点作为 Edge。

语法 − outV()

8

inV():

从当前记录开始获取传入的顶点作为 Edge。

语法 − inV()

9

traversedElement():

返回 Traverse 命令中遍历的元素。

语法 − traversedElement(<index> [,<items>])

10

traversedVertex():

返回 Traverse 命令中遍历的顶点。

语法 − traversedVertex(<index> [,<items>])

11

traversedEdge():

返回 Traverse 命令中遍历的边。

语法 − traversedEdge(<index> [,<items>])

12

shortestPath():

返回两个顶点之间的最短路径。 Direction 可以是 OUT(默认)、IN 或 BOTH。

Synatx − shortestPath( <sourceVertex>, <destinationVertex> [, <direction> [, <edgeClassName>]])

13

dijkstra():

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

计算引号(或双引号)之间的表达式。

语法 − eval('<expression>')

2

min():

返回最小值。如果使用多个参数调用,则返回所有参数之间的最小参数值。

语法 − min(<field> [, <field-n>]* )

3

max():

返回最大值。如果使用多个参数调用,则返回所有参数之间的最大值。

语法 − max(<field> [, <field-n>]* )

4

sum()

返回所有返回值的总和。

语法 − sum(<field>)

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

返回中间方差:与均值的平方差的平均值。

Syntax − 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> 是地图,则将其与地图合并,否则将 <key> 和 <value> 对作为新条目添加到地图中。

语法 − map(<key>, <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> [<format>] [,<timezone>] )

2

sysdate():

返回当前日期和时间。

语法 − sysdate( [<format>] [,<timezone>] )

3

format():

使用 String.format() 约定格式化值。

语法 − format( <format> [,<arg1> ](,<arg-n>]*.md)

4

distance():

使用 Haversine 算法返回地球上两点之间的距离。坐标必须为度。

语法 − distance( <x-field>, <y-field>, <x-value>, <y-value> )

5

ifnull():

返回传递的字段/值(或可选参数 return_value_if_not_null)。如果字段/值不为空,则返回 return_value_if_null。

语法 − ifnull(<field|value>, <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数据。