OrientDB-関数

この章では、OrientDBのさまざまなタイプの関数の完全なリファレンスについて説明します。次の表は、機能ごとに分類された機能のリストを定義しています。

グラフ関数

シニア番号 関数名と説明
1

Out():

現在のレコードから開始する隣接する発信頂点を頂点として取得します。

Syntax − out([<label-1>] [、<label-n>] *)

2

In():

現在のレコードから開始する隣接する入力頂点を頂点として取得します。

Syntax − in([<label-1>] [、<label-n>] *)

3

Both():

現在のレコードから開始して、隣接する発信頂点と着信頂点を頂点として取得します。

Syntax −両方([<label1>] [、<label-n>] *)

4

outE():

現在のレコードから開始する隣接する発信エッジを頂点として取得します。

Syntax − outE([<label1>] [、<label-n>] *)

5

inE():

現在のレコードから開始する隣接する入力エッジを頂点として取得します。

Syntax − inE([<label1>] [、<label-n>] *)

6

bothE():

現在のレコードから開始する隣接する発信エッジと着信エッジを頂点として取得します。

Syntax − bothE([<label1>] [、<label-n>] *)

7

outV():

現在のレコードから開始する発信頂点をEdgeとして取得します。

Syntax − outV()

8

inV():

現在のレコードから入力頂点をEdgeとして取得します。

Syntax − inV()

9

traversedElement():

トラバースコマンドでトラバースされた要素を返します。

Syntax − traversedElement(<index> [、<items>])

10

traversedVertex():

トラバースコマンドでトラバースされた頂点を返します。

Syntax − traversedVertex(<index> [、<items>])

11

traversedEdge():

トラバースコマンドでトラバースされたエッジを返します。

Syntax − traversedEdge(<index> [、<items>])

12

shortestPath():

2つの頂点間の最短経路を返します。方向は、OUT(デフォルト)、IN、またはBOTHのいずれかです。

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

13

dijkstra():

ダイクストラアルゴリズムを使用して、2つの頂点間の最も安いパスを返します。

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   
 ---+----------+-------+-------

数学関数

シニア番号 関数名と説明
1

eval():

引用符(または二重引用符)間の式を評価します。

Syntax − eval( '<式>')

2

min():

最小値を返します。複数のパラメーターを指定して呼び出された場合、すべての引数の間に最小の引数値が返されます。

Syntax − min(<field> [、<field-n>] *)

3

max():

最大値を返します。複数のパラメータを指定して呼び出された場合は、すべての引数間の最大値を返します。

Syntax − max(<field> [、<field-n>] *)

4

sum()

返されたすべての値の合計を返します。

Syntax − sum(<field>)

5

abs():

絶対値を返します。Integer、Long、Short、Double、Float、BigInteger、BigDecimal、nullで機能します。

Syntax − abs(<フィールド>)

6

avg():

平均値を返します。

Syntax − avg(<field>)

7

count():

クエリ条件に一致するレコードをカウントします。*がフィールドとして使用されていない場合、レコードはコンテンツがnullでない場合にのみカウントされます。

Syntax − count(<field>)

8

mode():

最も頻度が高い値を返します。ヌルは計算で無視されます。

Syntax −モード(<フィールド>)

9

median():

値がソートされた後の中間値または中間値を表す補間値を返します。ヌルは計算で無視されます。

Syntax −中央値(<フィールド>)

10

percentile():

n番目のパーセンタイルを返します。ヌルは計算で無視されます。

Syntax −パーセンタイル(<フィールド> [、<分位数-n>] *)

11

variance()

中央の分散を返します:平均からの差の二乗の平均。

Syntax −分散(<フィールド>)

12

stddev()

標準偏差を返します。値の広がりの尺度。ヌルは計算で無視されます。

Syntax − 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>が追加されます。

Syntax − set(<field>)

2

map():

マップが最初に作成されたときに、マップに値を追加します。<value>がマップの場合、マップとマージされます。それ以外の場合、<key>と<value>のペアが新しいエントリとしてマップに追加されます。

Syntax − map(<key>、<value>)

3

ist():

リストが最初に作成されたときに、リストに値を追加します。<value>がコレクションの場合はリストとマージされ、そうでない場合は<value>がリストに追加されます。

Syntax −リスト(<フィールド>)

4

difference():

アグリゲートまたはインラインとして機能します。渡された引数が1つだけの場合は集計され、それ以外の場合は実行され、パラメーターとして受け取ったコレクション間のDIFFERENCEが返されます。

Syntax −差分(<フィールド> [、<フィールド-n>] *)

5

first():

複数値フィールド(配列、コレクション、およびマップ)の最初のアイテムのみを取得します。非複数値型の場合は、値を返すだけです。

Syntax − first(<field>)

6

intersect():

アグリゲートまたはインラインとして機能します。渡された引数が1つだけの場合は、パラメーターとして受け取ったコレクションのINTERACTIONを集計するか、実行して返します。

Syntax −交差(<フィールド> [、<フィールド-n>] *)

7

distinct():

引数として指定したフィールドに応じて、一意のデータエントリのみを取得します。標準のSQLDISTINCTとの主な違いは、OrientDBでは、括弧付きの関数と1つのフィールドしか指定できないことです。

Syntax −distinct(<フィールド>)

8

expand():

この機能には2つの意味があります-

  • コレクションフィールドで使用すると、フィールド内のコレクションが巻き戻され、結果として使用されます。

  • リンク(RID)フィールドで使用すると、そのリンクが指すドキュメントが展開されます。

Syntax − Expand(<フィールド>)

9

unionall():

アグリゲートまたはインラインとして機能します。引数が1つだけ渡された場合は集計され、それ以外の場合は実行され、パラメーターとして受け取ったすべてのコレクションのUNIONが返されます。コレクション値なしでも機能します。

Syntax − unionall(<field> [、<field-n>] *)

10

flatten():

フィールド内のコレクションを抽出し、結果として使用します。非推奨です。代わりにexpand()を使用してください。

Syntax − flatten(<field>)

11

last():

複数値フィールド(配列、コレクション、およびマップ)の最後のアイテムのみを取得します。非複数値型の場合は、値を返すだけです。

Syntax − last(<field>)

12

symmetricDifference():

アグリゲートまたはインラインとして機能します。引数が1つだけ渡された場合は、パラメーターとして受け取ったコレクション間の対称差を集計し、それ以外の場合は実行して返します。

Syntax − 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>はこれらの規則に従った日付形式です。

Syntax − date(<date-as-string> [<format>] [、<timezone>])

2

sysdate():

現在の日付と時刻を返します。

Syntax − sysdate([<format>] [、<timezone>])

3

format():

String.format()規則を使用して値をフォーマットします。

Syntax − format(<format> [、<arg1>](、<arg-n>] *。md)

4

distance():

Haversineアルゴリズムを使用して、地球内の2点間の距離を返します。座標は度でなければなりません。

Syntax −距離(<x-field>、<y-field>、<x-value>、<y-value>)

5

ifnull():

渡されたフィールド/値(またはオプションのパラメーターreturn_value_if_not_null)を返します。フィールド/値がnullでない場合は、return_value_if_nullを返します。

Syntax − ifnull(<field | value>、<return_value_if_null> [、<return_value_if_not_null>](、<field&.md#124; value>] *)

6

coalesce():

nullではない最初のフィールド/値パラメータを返します。nullでないフィールド/値がない場合は、nullを返します。

Syntax −coalesce(<フィールド|値> [、<フィールド-n |値-n>] *)

7

uuid():

Leach-Salzバリアントを使用して、UUIDを128ビット値として生成します。

Syntax − uuid()

8

if():

条件(最初のパラメーター)を評価し、条件が真の場合は2番目のパラメーターを返し、そうでない場合は3番目のパラメーターを返します。

Syntax − if(<式>、<結果-if-true>、<結果-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のデータを簡単に操作できます。