温馨提示×

OrientDB图遍历教程有哪些

小樊
84
2024-10-29 17:42:19
栏目: 编程语言
开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

OrientDB图遍历主要通过两种查询语言实现:TRAVERSEMATCH。这两种语言都提供了丰富的函数来满足不同的遍历需求。

TRAVERSE语法格式

  • 简介TRAVERSE主要用于对图进行遍历,基于深度搜索算法或者广度搜索算法对图进行有限制的盲目搜索。它返回一个符合遍历条件的子图。
  • 语法格式TRAVERSE的语法格式如下:
TRAVERSE [class.]field | * | any() | all()
FROM <target>
[MAXDEPTH <number>] | [WHILE <condition>]
[LIMIT <max-records>]
[STRATEGY <strategy>]
  • 主要函数TRAVERSE后可跟9个函数,如out(), in(), both(), oute(), ine(), bothE(), outV(), inV(), bothV()等,用于控制遍历的方向和深度。

MATCH语法格式

  • 简介MATCH是OrientDB 2.2版本引入的以声明方式的模式匹配语言,主要用于查询图。它和Neo4j的Cypher语言有点像,但目前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>
  • 主要函数MATCH支持out(), in(), both(), oute(), ine(), bothE(), outV(), inV(), bothV()等函数,用于定义连接两个节点的图函数。

示例代码

  • 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

最佳实践

  • 使用优先级MATCH通常用于更复杂的查询,而TRAVERSE适用于简单的遍历需求。
  • 查询环:使用WHERE子句和LIMIT来避免无限循环。
  • 使用场景:根据是否需要返回路径信息、是否需要过滤结果等选择合适的查询语言。

通过上述教程和示例,您可以更好地理解和应用OrientDB的图遍历功能。

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

推荐阅读:OrientDB图遍历有哪些限制

0