scala - Scala 的 GREMLIN:如何在单个查询中在两个顶点之间放置边并在两个顶点之间连接边
问题描述
我通过https://github.com/mpollmeier/gremlin-scala#getting-started将这个库用于 gremlin scala 。
这是一个用例,有三个顶点(A,B,C)。两个 A、B 顶点已经与名为“IS”的边相连。
现在我想在单个 gremlin scala 查询中删除 A、B 之间的“IS”边缘并将 A 连接到 C 并使用名为“IS”的边缘。早些时候我写了两个不同的 gremlin scala 查询,一个用于删除边缘,另一个用于添加边缘,但我想将这两个查询合并为一个。
解决方案
假设该库支持以下所有内容,您应该能够运行以下内容,这将删除 V(1) 和 V(2) 之间的关系,同时在 V(1) 和 V(6) 之间添加一条边。
依靠一个相关的问题来制定这个,可以在这里找到
对于您的情况:A=1, B=2, C=6
gremlin> graph = TinkerFactory.createModern()
==>tinkergraph[vertices:6 edges:6]
gremlin> g = graph.traversal()
==>graphtraversalsource[tinkergraph[vertices:6 edges:6], standard]
gremlin> g.E()
==>e[7][1-knows->2]
==>e[8][1-knows->4]
==>e[9][1-created->3]
==>e[10][4-created->5]
==>e[11][4-created->3]
==>e[12][6-created->3]
gremlin> g.V(1).as('A').bothE().where(otherV().hasId(2)).as('drop').addE('IS').from('A').to(V(6)).select('drop').drop()
gremlin> g.E()
==>e[8][1-knows->4]
==>e[9][1-created->3]
==>e[10][4-created->5]
==>e[11][4-created->3]
==>e[12][6-created->3]
==>e[13][1-IS->6]
推荐阅读
- python-3.x - 如何使用 Celery 安排在每个月的最后一天运行的任务?
- javascript - 与 new Date().toLocaleDateString() 相比,MAT_DATE_LOCALE 返回不同的输出
- typescript - 键入 assoc 函数以正确推断新类型
- sql - 在 Oracle 中获取 Pivot 的查询
- azure-active-directory - 将用户自定义角色/属性从自定义 Web 应用程序 (CMS)(已与 MS Azure AD 集成)导入 MS Azure AD
- firebase - 如何暂停 Firebase 消息传递(云消息传递)
- python-3.x - 使用 PIL 模块加载图像
- python - 如何关闭演示文稿而不将其保存在 Python pptx 中
- python - 从 Python 导出文件的 MS Access 大文件大小问题
- python-3.x - 为什么这个脚本不会像 xxd 那样打印输出