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

Gremlin如何在单条查询中获取出边及其目标顶点

当然可以用单条Gremlin查询同时获取出边和目标顶点!

完全没问题,Gremlin有好几种灵活的写法能一次性拿到边的属性和对应的目标顶点信息,不用分开查。给你几个实用的方案:

方案1:用project()自定义返回结构

这是最直观的方式,你可以明确指定返回的字段和对应的数据:

G.V().hasId("something")
  .outE()
  .project("edgeProperties", "targetVertex")
  .by(valueMap()) // 获取这条边的所有属性,也可以指定特定属性比如by("weight", "label")
  .by(inV().valueMap(true)) // inV()拿到目标顶点,valueMap(true)会包含顶点ID和所有属性

如果不需要所有属性,只想要特定字段,直接把valueMap()换成指定属性列表就行,比如by("name", "age", T.id)来获取顶点的名字、年龄和ID。

方案2:用as()+select()链式关联

这种写法适合一步步关联边和顶点,然后一次性取出:

G.V().hasId("something")
  .outE().as("edge") // 给当前出边起别名"edge"
  .inV().as("vertex") // 拿到目标顶点并起别名"vertex"
  .select("edge", "vertex")
  .by(valueMap())
  .by(valueMap(true))

这样返回的结果会是包含edge和vertex两个键的Map,分别对应边和顶点的信息。

方案3:用map()构造嵌套结果

如果你想要把顶点信息嵌套在边的结果里,可以用map()来组合:

G.V().hasId("something")
  .outE()
  .map(
    __.valueMap().with("targetVertex", __.inV().valueMap(true))
  )

这个查询会返回每条边的属性Map,里面额外包含一个targetVertex键,对应目标顶点的信息。

根据你的实际需求选合适的写法就行,要是需要更细粒度的控制,还可以在by()里加更多筛选或者转换逻辑~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 19:17:27