格林姆林:如何识别哪些属性属于哪些边

时间:2019-03-12 01:43:41

标签: gremlin

我有一个带有两个顶点的简单图形,它们的ID为'a'和'b'。

我从'a'到'b'分配了两个边,每个边都有标签=“ foo”

[1] gremlin> g.V('a')。outE()

==> e [f4b4b71d-ca98-5302-3eb1-7f99a7e74081] [a-foo-> b]

==> e [98b4b71d-c8c9-4ca2-9fbe-2f58e33d25e4] [a-foo-> b]

每条边都有一个属性为key =“ committed”。

[2] gremlin> g.E()。properties()

==> p [committed-> 2]

==> p [committed-> 1]

我的问题:我想枚举边并像在步骤[2]中一样返回它们各自的属性,但是如何将结果中的边属性与它们各自的边(id)相匹配?我得到的只是属性键值分配。没有任何与边缘ID相关的信息。

谢谢

Joel Stevick

1 个答案:

答案 0 :(得分:2)

您应该避免返回诸如顶点和边之类的图形元素,而应将结果转换为所需的特定形式。您可以通过多种方式做到这一点。在这种情况下,project()可以很好地工作:

gremlin> g.V().outE().project('id','weight').by(id).by('weight')
==>[id:9,weight:0.4]
==>[id:7,weight:0.5]
==>[id:8,weight:1.0]
==>[id:10,weight:1.0]
==>[id:11,weight:0.4]
==>[id:12,weight:0.2]

或者您可以使用valueMap()-在3.4.0上,您可以使用with()语法:

gremlin> g.V().outE().valueMap('weight').with(WithOptions.tokens)
==>[id:9,label:created,weight:0.4]
==>[id:7,label:knows,weight:0.5]
==>[id:8,label:knows,weight:1.0]