Gremlin:dedup() 与顶点组不工作

Gremlin: dedup() with groups of vertices not working

我有一个查询 returns 组这样的用户:

==>[britney,ladygaga,aguilera]
==>[aguilera,ladygaga,britney]

这 2 个示例组具有不同顺序的相同项目,问题是在这种情况下 dedup() 不会删除其中一个组,因为具有不同顺序的项目会使它们对于 dedup 不同。

我能想到的唯一解决方案是在每个组中调用 order() 以便它们具有相同的顺序和 dedup() 工作。但是这个解决方案意味着:

  1. 额外的计算只是因为 dedup 无法处理这种情况
  2. 我必须添加一个丑陋的评论,例如“这是为了使重复数据删除工作”

还有其他解决方案吗?

您可以在 gremlin 控制台中使用以下行尝试我上面的示例:

g.addV("user").property("name", "britney")
g.addV("user").property("name", "aguilera")
g.addV("user").property("name", "ladygaga")

重复工作:

g.V().hasLabel("user").values("name").fold().store("result").V().hasLabel("user").values("name").fold().store("result").select("result").unfold().dedup()

Dedup 不工作,因为项目被打乱:

g.V().hasLabel("user").values("name").order().by(shuffle).fold().store("result").V().hasLabel("user").values("name").order().by(shuffle).fold().store("result").select("result").unfold().dedup()

您必须 order() 列表才能使它们相等:

gremlin> g.V().hasLabel("user").values("name").order().by(shuffle).fold().store("result").
......1>   V().hasLabel("user").values("name").order().by(shuffle).fold().store("result").
......2>   select("result").unfold().order(local).dedup()
==>[aguilera,britney,ladygaga]

这是标准列表相等性:

gremlin> [1,2,3] == [1,2,3]
==>true
gremlin> [1,2,3] == [3,2,1]
==>false