首页 > 解决方案 > Gremlin:如何识别哪些属性属于哪些边

问题描述

我有一个简单的图,有两个顶点,ID 为“a”和“b”。

我已将两条边从“a”分配到“b”,其中每条边都有标签 =“foo”

[1] gremlin> gV('a').outE()

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

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

每个边都有一个 key = "committed" 的属性。

[2] gremlin> gE().properties()

==>p[提交->2]

==>p[提交->1]

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

谢谢,

乔尔·斯蒂维克

标签: gremlin

解决方案


您应该避免返回顶点和边等图形元素,而是将结果转换为您需要的特定形式。你可以通过多种方式做到这一点。在这种情况下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]

推荐阅读