如何在单个 gremlin 查询中将两个顶点详细信息和边属性详细信息合并在一起

Posted

技术标签:

【中文标题】如何在单个 gremlin 查询中将两个顶点详细信息和边属性详细信息合并在一起【英文标题】:How to merge Two Vertex details and Edge Properties details Together in a single gremlin query 【发布时间】:2016-05-17 00:06:30 【问题描述】:

如何在一个 gremlin 查询中将两个顶点详细信息和边属性详细信息合并在一起。

我有两个顶点:

用户信息顶点

PostInfo 顶点

EdgeInfo 在它们之间

使用 Gremlin 查询:g.v(2569472).out('_label','WallPost')[0..1]

我正在获取 UserPost 顶点详细信息,我想在响应中添加 UserVertex 详细信息(即性别)和响应中的 Edge 属性详细信息(即 EdgeMes​​sage)

我正在尝试将 sql 等效的内部连接操作与来自 sql2gremlin 的 gremlin 进行比较,但我无法获得所需的结果。

【问题讨论】:

【参考方案1】:

SQL2Gremlin 是为 TinkerPop 3 编写的,您仍在使用 TinkerPop 2(IMO 复杂得多)。不管怎样,下面是你在 TP2 中的做法:

gremlin> g = TinkerGraphFactory.createTinkerGraph()
==>tinkergraph[vertices:6 edges:6]
gremlin> g.v(1).outE("knows")
==>e[7][1-knows->2]
==>e[8][1-knows->4]
gremlin> g.v(1).outE("knows").inV().retain([g.v(4)])
==>v[4]
gremlin> g.v(1).as("x").outE("knows").as("y").inV().retain([g.v(4)]).select(["x","y"]) it.map() it.weight
==>[x:name=marko, age=29, y:1.0]

【讨论】:

以上是关于如何在单个 gremlin 查询中将两个顶点详细信息和边属性详细信息合并在一起的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 gremlin 在两个顶点之间创建双向边?

如何从顶点scala gremlin获取所有传入/传出边的所有顶点

Gremlin 从与单个顶点相关的边列表中获取最高值

在 gremlin 查询中选择多个边和顶点

如何使用 Gremlin 从我在 Titan 中关注的所有用户(边缘)获取帖子(顶点)

Gremlin 中的决策树查询