问题
我正在运行一个查询,该查询通过 name
属性查找重复的顶点。我想知道所有相应顶点的 ID。
此时只返回where子句中的id。
示例图
这是一个玩具示例图。有两个同名的顶点 ex
。
==>tinkergraph[vertices:0 edges:0]
gremlin> g = graph.traversal()
==>graphtraversalsource[tinkergraph[vertices:0 edges:0], standard]
gremlin> g.addV('X').property('name', 'ex')
==>v[0]
gremlin> g.addV('Y').property('name', 'why')
==>v[2]
gremlin> g.addV('Y').property('name', 'ex')
==>v[4]
gremlin> g.V().elementMap()
==>[id:0,label:X,name:ex]
==>[id:2,label:Y,name:why]
==>[id:4,label:Y,name:ex]
检测重复项
当我找到重复项并获取 elementMap()
时,ID 仅适用于 where
子句中匹配的顶点。
gremlin> g.V().hasLabel('X').as('x').V().hasLabel('Y').as('y').where('x', P.eq('y')).by('name').elementMap()
==>[id:4,label:Y,name:ex]
而我想查看两者的 id
,其中 id:0
和 id:4
我想要这样的东西:
==>[[id:0,label:X,name:ex], [id:4,label:Y,name:ex]]
最佳答案
你实际上已经非常接近了
gremlin> g.V().hasLabel('X').as('x').
......1> V().hasLabel('Y').as('y').
......2> where(eq('x')).by('name').
......3> select('x','y').
......4> by(valueMap().by(unfold()).
with(WithOptions.tokens)).
......5> select(values)
==>[[id:0,label:X,name:ex],[id:4,label:Y,name:ex]]
关于gremlin - 检索 Gremlin 中重复顶点的所有 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62054364/