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数据。