gremlin - 检索 Gremlin 中重复顶点的所有 ID

标签 gremlin gremlin-server gremlinpython

问题

我正在运行一个查询,该查询通过 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:0id: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/

相关文章:

gremlin - 获取 Gremlin Server 的版本

java - 使用 java 在亚马逊 EC2 上托管的 Gremlin 服务器上执行 gremlin 查询

python - Gremlin Python - 如何从 valueMap 获取 ID

python - gremlin-python - 无法添加边缘属性

connection - 海王星 - 运行时错误 : Connection was already closed in pythongremlin

graph-databases - 如何添加列表作为顶点或边 gremlin 的属性

gremlin - Python Gremlin 中的顶点未更新

python - 在 python 中构造 janusgraph 的 get 查询

python - 无法使用 gremlinpython 进行查询

azure - 根据边属性选择顶点