【发布时间】:2020-07-18 00:09:04
【问题描述】:
我有一个查询返回这样的用户组:
==>[britney,ladygaga,aguilera]
==>[aguilera,ladygaga,britney]
这 2 个示例组具有相同的项目以不同的顺序,问题是 dedup() 在这种情况下不会删除其中一个组,因为具有不同顺序的项目会使它们对于 dedup 不同。
我能想到的唯一解决方案是在每个组中调用 order(),以便它们具有相同的顺序并且 dedup() 有效。但是这个解决方案意味着:
- 额外的计算只是因为 dedup 无法处理这种情况
- 我必须添加一条丑陋的评论,例如“这是为了使重复数据删除工作”
还有其他解决方案吗?
您可以在 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()
重复数据删除无法正常工作,因为项目被打乱了:
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()
【问题讨论】:
标签: gremlin tinkerpop tinkerpop3 gremlin-server