以下是您可以使用“现代”玩具图作为示例的一种方法:
gremlin> graph = TinkerFactory.createModern()
==>tinkergraph[vertices:6 edges:6]
gremlin> g = graph.traversal()
==>graphtraversalsource[tinkergraph[vertices:6 edges:6], standard]
gremlin> g.V().outE('knows').as('e').
inV().as('v').
select('e','v').by('weight').by(valueMap())
==>[e:0.5,v:[name:[vadas],age:[27]]]
==>[e:1.0,v:[name:[josh],age:[32]]]
所以,我不想从“likes”边获取“addOn”和“item”顶点的属性,而是想从“knows”边获取“weight”和“person”顶点的属性.在第一行中,我们在“knows”边上遍历并将其标记为“e”,然后我们遍历到相邻的in person 顶点并将其标记为“v”。最后,我们选择这两个标签的值并对它们应用by 转换。 by 以循环方式应用,因此第一个 by 应用于“e”,第二个应用于“v”。
valueMap 的使用有点方便,但通常您会知道要从顶点检索的数据,就像您知道要从边缘检索的数据一样(即“权重”)。要在没有所有嵌入式 Map 的情况下获得更好的输出,那么您可以这样做:
gremlin> g.V().outE('knows').as('w').
inV().as('a','n').
select('w','a','n').
by('weight').by('age').by('name')
==>[w:0.5,a:27,n:vadas]
==>[w:1.0,a:32,n:josh]