获取顶点和与其相连的顶点的详细信息

Getting the vertex and the details of the vertex connected to it

我有如下场景,需要获取 'Application' 标签顶点属性以及与其相连的 'work' 顶点的 ID 或 属性

我已经编写了 gremlin glv 查询来获取路径和应用程序属性,但很难获取与其连接的顶点的属性(使用 pyton)

查询是,

g.V().hasLabel('Company').outE().inV().hasLabel('Person').outE().inV().hasLabel('Work').outE().inV().hasLabel('Applications').path().unfold().dedup().filter('Applications').elementMap().toList()

这个 return 我的应用程序顶点值像

[{
  id:'12159',label:'Applications', 'applicationname':'application1'
},
{
 id:'12157',label:'Applications', 'applicationname':'application2'
},
{
 id:'12155',label:'Applications', 'applicationname':'application3'
}

]

但我们还需要获取 'work' 顶点详细信息以及应用程序详细信息(应用程序可以连接到多个工作),例如,

{
  id:'12159',label:'Applications', 'applicationname':'application1', 'workcode':['workcode1', 'workcode2']
},
{
  id:'12157',label:'Applications', 'applicationname':'application2', 'workcode':['workcode2']
}.
{
  id:'12157',label:'Applications', 'applicationname':'application3', 'workcode':['workcode2']
}

是否可以在gremlin本身获取这些信息,或者我们是否需要在获取路径后使用python,

要添加的查询是,

g.addV('Company').as('1').
addV('Company').as('2').
addV('Person').as('3').
addV('Work').as('4').
property(single, 'workcode', 'workcode2').
addV('Work').as('5').
property(single, 'workcode', 'workcode1').
addV('Application').as('6').
property(single, 'applicationname', 'application3').
addV('Application').as('7').
property(single, 'applicationname', 'application2').
addV('Application').as('8').
property(single, 'applicationname', 'application1').
addE('Contractor').from('2').to('3').
addE('Contractor').from('1').to('3').
addE('work').from('3').to('5').addE('work').
from('3').to('4').addE('workingon').from('4').
to('7').addE('workingon').from('4').to('6').
addE('workingon').from('5').to('8').
addE('workingon').from('4').to('8')

谢谢

我认为您不应该使用 path 步骤,因为您只使用了最后一个顶点。 如果要将元素贴图与来自另一个顶点的 属性 合并,可以使用 project:

g.V().hasLabel('Company').outE().inV().
  hasLabel('Person').outE().inV().
  hasLabel('Work').outE().inV().
  hasLabel('Application').dedup().local(union(
      elementMap().unfold(),
      project('workcose').
        by(in().hasLabel('Work').
          values('workcode').fold())
    ).
    fold())

示例:https://gremlify.com/d5wsk80nm2t/1