Orientdb-functions

提供:Dev Guides
移動先:案内検索

OrientDB-関数

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

グラフ関数

____グラフデータを操作するために使用される関数。

Sr.No. Function Name & Description
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():

2つの頂点間の最短パスを返します。 方向は、OUT(デフォルト)、IN、またはBOTHです。

  • Synatx* -shortestPath(<sourceVertex>、<destinationVertex> [、<direction> [、<edgeClassName>]])
13

dijkstra():

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

構文-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. Function Name & Description
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():

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

構文-count(<field>)

8

mode():

最大の頻度で発生する値を返します。 計算ではヌルは無視されます。

構文-mode(<field>)

9

median():

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

構文-中央値(<フィールド>)

10

percentile():

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

構文-パーセンタイル(<field> [、<quantile-n>] *)

11

variance()

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

構文-分散(<フィールド>)

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. Function Name & Description
1

set():

値をセットに追加します。 値がコレクションの場合は、セットとマージされます。それ以外の場合は、<value>が追加されます。

構文-set(<field>)

2

map():

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

構文-map(<key>、<value>)

3

ist():

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

構文-list(<field>)

4

difference():

集約またはインラインとして機能します。 引数が1つだけ渡された場合は、集約され、そうでなければ実行され、パラメーターとして受け取ったコレクション間のDIFFERENCEを返します。

構文-差(<field> [、<field-n>] *)

5

first():

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

構文-first(<field>)

6

intersect():

集約またはインラインとして機能します。 引数が1つだけ渡された場合、パラメーターとして受け取ったコレクションのINTERACTIONを集約し、そうでなければ実行して返します。

構文-intersection(<field> [、<field-n>] *)

7

distinct():

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

構文-distinct(<field>)

8

expand():

この関数には2つの意味があります

  • コレクションフィールドで使用すると、フィールド内のコレクションを巻き戻し、結果として使用します。
  • リンク(RID)フィールドで使用すると、そのリンクが指すドキュメントが展開されます。

構文-expand(<field>)

9

unionall():

集約またはインラインとして機能します。 引数が1つしか渡されない場合は集約され、そうでない場合はパラメーターとして受け取ったすべてのコレクションのUNIONを実行して返します。 コレクション値なしでも機能します。

構文-unionall(<field> [、<field-n>] *)

10

flatten():

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

構文-flatten(<field>)

11

last():

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

構文-last(<field>)

12

symmetricDifference():

集約またはインラインとして機能します。 引数を1つだけ渡すと、パラメーターとして受け取ったコレクション間のSYMMETRIC DIFFERENCEが集計、実行、または返されます。

構文-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. Function Name & Description
1

date():

文字列をフォーマットする日付を返します。 <date-as-string>は文字列形式の日付で、<format>はこれらの規則に従った日付形式です。

構文-日付(<date-as-string> [<format>] [、<timezone>])

2

sysdate():

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

構文-sysdate([<format>] [、<timezone>])

3

format():

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

構文-format(<format> [、<arg1>](、<arg-n>] *。md)

4

distance():

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

構文-距離(<x-field>、<y-field>、<x-value>、<y-value>)

5

ifnull():

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

構文-ifnull(<field

value>、<return_value_if_null> [、<return_value_if_not_null>](、<field&.md#124; value>] *) 6

coalesce():

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

構文-結合(<フィールド

値> [、<フィールド-n
値-n>] *) 7

uuid():

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

構文-uuid()

8

次のクエリを使用して、いくつかのその他の機能を試してください。

次のクエリを実行して、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データを簡単に操作できます。