OrientDB圖遍歷教程有哪些

小樊
82
2024-10-29 17:42:19
欄目: 編程語言

OrientDB圖遍歷主要通過兩種查詢語言實(shí)現(xiàn):TRAVERSEMATCH。這兩種語言都提供了豐富的函數(shù)來滿足不同的遍歷需求。

TRAVERSE語法格式

  • 簡介TRAVERSE主要用于對(duì)圖進(jìn)行遍歷,基于深度搜索算法或者廣度搜索算法對(duì)圖進(jìn)行有限制的盲目搜索。它返回一個(gè)符合遍歷條件的子圖。
  • 語法格式TRAVERSE的語法格式如下:
TRAVERSE [class.]field | * | any() | all()
FROM <target>
[MAXDEPTH <number>] | [WHILE <condition>]
[LIMIT <max-records>]
[STRATEGY <strategy>]
  • 主要函數(shù)TRAVERSE后可跟9個(gè)函數(shù),如out(), in(), both(), oute(), ine(), bothE(), outV(), inV(), bothV()等,用于控制遍歷的方向和深度。

MATCH語法格式

  • 簡介MATCH是OrientDB 2.2版本引入的以聲明方式的模式匹配語言,主要用于查詢圖。它和Neo4j的Cypher語言有點(diǎn)像,但目前MATCH僅支持用于查詢。
  • 語法格式MATCH的語法格式如下:
MATCH { [class: <class>], [as: <alias>], [where: (<whereCondition>)] }
.<functionName>(){ [class: <classname>], [as: <alias>], [where: (<whereCondition>)], [while: (<whileCondition>)], [maxDepth: <number>], [depthAlias: <identifier>], [pathAlias: <identifier>], [optional: (true | false)] }*
RETURN <expression> [AS <alias>] [, [AS]]*
GROUP BY <expression> [, <expression>]*
ORDER BY <expression> [, <expression>]*
SKIP <number>
LIMIT <number>
  • 主要函數(shù)MATCH支持out(), in(), both(), oute(), ine(), bothE(), outV(), inV(), bothV()等函數(shù),用于定義連接兩個(gè)節(jié)點(diǎn)的圖函數(shù)。

示例代碼

  • TRAVERSE示例
TRAVERSE out('EdgeClass') FROM (SELECT * FROM Profiles WHERE id = 1)
LIMIT 8
  • MATCH示例
MATCH { [class: Profiles], [as: p], [where: (id = 1)] }
.-outE('EdgeClass')-> { [class: Profiles], [as: p2], [where: (id = 2)] }
RETURN p2.id, p2.name

最佳實(shí)踐

  • 使用優(yōu)先級(jí)MATCH通常用于更復(fù)雜的查詢,而TRAVERSE適用于簡單的遍歷需求。
  • 查詢環(huán):使用WHERE子句和LIMIT來避免無限循環(huán)。
  • 使用場景:根據(jù)是否需要返回路徑信息、是否需要過濾結(jié)果等選擇合適的查詢語言。

通過上述教程和示例,您可以更好地理解和應(yīng)用OrientDB的圖遍歷功能。

0