要解决“凹凸不平结果数组的 Gremlin 查询”,可以按照以下步骤进行:
graph = TinkerGraph.open()
g = graph.traversal()
g.addV('vertex').property('value', 1).as('v1').
addV('vertex').property('value', 2).as('v2').
addV('vertex').property('value', 3).as('v3').
addV('vertex').property('value', 4).as('v4').
addE('edge').from('v1').to('v2').
addE('edge').from('v2').to('v3').
addE('edge').from('v3').to('v4').iterate()
outE()
和 inV()
步骤获取出边和入边的顶点,并使用 project()
步骤将结果映射为一个数组:result = g.V().hasLabel('vertex').
project('vertex', 'out_edges', 'in_edges').
by(valueMap(true)).
by(outE().valueMap(true).fold()).
by(inE().valueMap(true).fold()).
toList()
result.each { vertex ->
println "Vertex: ${vertex['vertex'][0]['value']}"
println "Out edges: ${vertex['out_edges']}"
println "In edges: ${vertex['in_edges']}"
}
完整的代码示例如下:
graph = TinkerGraph.open()
g = graph.traversal()
g.addV('vertex').property('value', 1).as('v1').
addV('vertex').property('value', 2).as('v2').
addV('vertex').property('value', 3).as('v3').
addV('vertex').property('value', 4).as('v4').
addE('edge').from('v1').to('v2').
addE('edge').from('v2').to('v3').
addE('edge').from('v3').to('v4').iterate()
result = g.V().hasLabel('vertex').
project('vertex', 'out_edges', 'in_edges').
by(valueMap(true)).
by(outE().valueMap(true).fold()).
by(inE().valueMap(true).fold()).
toList()
result.each { vertex ->
println "Vertex: ${vertex['vertex'][0]['value']}"
println "Out edges: ${vertex['out_edges']}"
println "In edges: ${vertex['in_edges']}"
}
运行以上代码,将会输出每个顶点的值、出边和入边的信息。