You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OrientDB中如何获取关联顶点及含边的完整路径?

解决OrientDB完整路径查询的问题

嘿,我明白你现在的困扰——想从"giggs"出发拿到完整的关联路径,包括所有中间节点和边,但当前查询只返回了最终节点对吧?咱们来调整下MATCH语句,让它能输出你需要的完整路径信息。

核心修正思路

问题出在你原来的查询没有明确绑定整个遍历路径,导致返回的结果只捕获了最终节点。OrientDB的MATCH语法支持用变量绑定完整路径,这样就能保留所有中间节点和关联边的信息。

修正后的查询语句

MATCH 
  p = {class: ic, as: start, where: (title = 'giggs')}
  .(outE({where: 'some condition'}).inV().inE({where: 'some condition'}).outV())*{
    while: $depth <= 5,
    where: $matched.start != $currentMatch
  }
RETURN p AS full_path

语句细节解释

  • p =:把整个遍历路径绑定到变量p上,这样返回p时就能拿到路径上的所有节点和边。
  • .(...)*:用*重复执行你定义的边-节点遍历模式(outE->inV->inE->outV),配合while: $depth <=5控制最大遍历深度。
  • where: $matched.start != $currentMatch:避免遍历过程中循环回到起始节点"giggs"。

更灵活的输出方式

如果你想单独提取路径中的节点标题或边的属性,可以用下面的查询,结果会更直观:

MATCH 
  p = {class: ic, as: start, where: (title = 'giggs')}
  .(outE({where: 'some condition'}){as: edge}.inV(){as: node}.inE({where: 'some condition'}){as: edge2}.outV(){as: node2})*{
    while: $depth <=5,
    where: $matched.start != $currentMatch
  }
RETURN 
  [node IN nodes(p) | node.title] AS path_node_titles,
  [edge IN edges(p) | edge.your_edge_property] AS path_edge_details,
  p AS complete_path

这里nodes(p)会返回路径上的所有节点,edges(p)返回所有关联边,你可以根据自己的需求调整提取的属性。

这样调整后,你就能拿到像"giggs"->"192.168.0.1"->"ronaldo"->"192.168.0.2"->"veri"这样的完整路径,以及每个节点和边的详细信息啦!

内容的提问来源于stack exchange,提问作者Giggs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:15:56