【发布时间】:2019-03-29 14:29:06
【问题描述】:
我在图中有重复的边,它们具有相同的 inV、outV 和一些(但不是全部)属性。除了其中一个重复项之外,我想删除所有重复项。
给定下图:
g.addV().property(id, '1').
addV().property(id, '2').
addV().property(id, '3').
addV().property(id, '4').
addE('link').property('prop1', 000).property('prop2', 111).from(V('1')).to(V('2')).
addE('link').property('prop1', 000).property('prop2', 112).from(V('1')).to(V('2')).
addE('link').property('prop1', 000).property('prop2', 113).from(V('1')).to(V('2')).
addE('link').property('prop1', 222).property('prop2', 333).from(V('2')).to(V('3')).
addE('link').property('prop1', 222).property('prop2', 334).from(V('2')).to(V('3')).
addE('link').property('prop1', 222).property('prop2', 335).from(V('2')).to(V('3')).
addE('link').property('prop1', 222).property('prop2', 336).from(V('2')).to(V('3')).
addE('link').property('prop1', 333).property('prop2', 444).from(V('2')).to(V('3')).
addE('link').property('prop1', 333).property('prop2', 444).from(V('3')).to(V('4')).
addE('link').property('prop1', 333).property('prop2', 445).from(V('3')).to(V('4')).
addE('link').property('prop1', 333).property('prop2', 446).from(V('3')).to(V('4')).iterate()
我想删除inV、outV 和prop1 的所有重复项,因此只留下以下边:
addE('link').property('prop1', 000).property('prop2', 111).from(V('1')).to(V('2')).
addE('link').property('prop1', 222).property('prop2', 336).from(V('2')).to(V('3')).
addE('link').property('prop1', 333).property('prop2', 444).from(V('2')).to(V('3')).
addE('link').property('prop1', 333).property('prop2', 446).from(V('3')).to(V('4'))
编辑:为了澄清,我想通过检查 inV、outV 和 prop1 来删除重复的边缘,如果有多个边缘与所有这 3 个参数匹配我想要无论prop2 是否唯一,保留一个并删除其余的。
【问题讨论】:
-
我无法从您的预期结果中检测到模式,关于移除属性的确切决策标准是什么?
-
所以我想遍历每个节点,获取它们的所有边,检查是否有多个边 inV、outV 和 prop1 相同,如果它们相同,则保留一个并删除其余部分,无论 prop2 是否唯一。
标签: gremlin