orientdb数据库-OrientDB函数

跨零代码为大家提供高品质的解决方案,请大家多多来访,跨零不胜感激,在此谢过。

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

图函数

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

编号 函数名称 说明
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() 从当前记录中获取进入的顶点作为边。语法:inV()
9 traversedElement() 返回遍历命令中的遍历元素。语法:traversedElement(<index> [,<items>])
10 traversedVertex() 在遍历命令中返回遍历的顶点。语法:traversedVertex(<index> [,<items>])
11 traversedEdge() 返回遍历命令中的遍历边。语法:traversedEdge(<index> [,<items>])
12 shortestPath() 返回两个顶点之间的最短路径。 方向可以是OUT(默认),INBOTH
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     ---+----------+-------+------- ` 

数学函数

下表定义了用于执行数学表达式的数学函数的列表。

编号 函数 描述
1 eval() 计算引号(或双引号)之间的表达式。语法:eval('<expression>')
2 min() 返回最小值。 如果用多个参数调用,则它返回所有参数之间的最小参数值。语法:min(<field> [, <field-n>]* )
3 max() 返回最大值。 如果调用多个参数,则返回所有参数之间的最大值。语法:max(<field> [, <field-n>]* )
4 sum() 返回所有返回值的总和。语法:sum(<field>)
5 abs() 返回绝对值。 它适用于IntegerLongShortDoubleFloatBigIntegerBigDecimalnull
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  ---+----------+--------- 

集合函数

下表定义了操作集合数据的函数列表。

编号 函数 描述
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() 这个函数有两个含义 – 1.在集合字段上使用时,它将展开字段中的集合并将其作为结果使用。2. 在链接(RID)字段上使用时,它会扩展该链接指向的文档。语法:expand(<field>)
9 unionall() 作为汇总或内联工作。 如果只传递一个参数,则聚合,否则执行并返回作为参数接收的所有集合的UNION。 也适用于没有收集值。语法:unionall(<field> [,<field-n>]*)
10 flatten() 在字段中提取集合并将其用作结果。 已弃用,请使用expand()
11 last() 仅检索多值字段的最后一项(数组,集合和映射)。 对于非多值类型,只返回值。语法:last(<field>)
12 symmetricDifference()
13 作为汇总或内联工作。 如果只传递一个参数,则聚集,否则执行并返回作为参数接收的集合之间的对称差分。语法: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  ---+----------+-------+--------------------------- 

杂项函数

下表定义了执行杂项操作的函数列表。

编号 函数 描述
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)。 如果field/value不为null,则返回return_value_if_null。语法:`ifnull(<field value>, ,`
6 coalesce() 返回第一个字段/值非空参数。 如果没有字段/值不为空,则返回null。语法:`coalesce(<field value> [, <field-n value-n>]*)`
7 uuid() 使用Leach-Salz变体生成一个128位的UUID值。语法:uuid()
8 if() 评估条件(第一个参数),如果条件为真,则返回第二个参数,否则返回第三个参数。语法:if(<expression>, <result-if-true>, <result-if-false>)

使用以下查询尝试一些其它函数。
执行以下查询以了解如何执行表达式。

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

  

从零到一,创造未来!跨零综合IT问题解决服务站,欢迎你的到来。Oracle数据库教程 orientdb数据库/a> 只为你绽放。

本文固定链接: http://kua0.com/2019/05/10/orientdb数据库-orientdb函数/

为您推荐

发表评论

电子邮件地址不会被公开。 必填项已用*标注