gremlin - 将 Gremlin 查询压缩为一个
问题描述
我有两个查询删除图中相同初始顶点的某些顶点
g.V(id).outV().drop().iterate()
g.V(id).drop().iterate()
是否可以将这两个查询合并为一个?
第二个问题是如何在顶点被删除之前对顶点执行一些终端操作,我尝试使用sideEffect,但它需要返回值
g.V(id).outV().sideEffect(outV().forEachRemainig(x -> // do something)).drop()
解决方案
对于您最初的问题,您可以通过以下方式完成sideEffect()
此操作:
g.V(id).sideEffect(out().drop()).drop()
对于第二次遍历,您可以通过切换sideEffect()
到执行删除来完成此操作,然后将剩余操作作为主要遍历流的一部分。由于sideEffect()
将传入的遍历流式传输到输出,您将能够对它们执行如下操作:
g.V(id).sideEffect(drop()).valueMap()
这里只是一个注释,在你原来的遍历中你去了g.V(id).outV()
这是不允许的,因为outV()
只能从边缘工作,所以我把它改成了out()
带你到相邻顶点的地方。
推荐阅读
- database - 我可以在超类型和每个子类型之间建立一对多的关系吗?
- drools - 为什么在重新加载持久会话后,Drools 会重新评估和重新触发规则操作?
- mongodb - UnhandledPromiseRejectionWarning: MongoServerError: E11000 duplicate key error collection: (MongoDB)
- pandas - 根据两列的最大值在数据框中创建具有列名的新列
- postgresql-12 - PostgreSQL SELECT 基于 JSON 对象中的值
- pyarrow - 如何使用pyarrow记录批处理跨不同进程甚至不同主机进行通信
- agda - Agda 中数据类型的可判定相等性
- java - HTTP 400 - 带有 tomcat 10 的 Java spring-boot webapp 不工作
- spring-boot - 错误:无法验证第一个证书 - Springboot
- html - 如何让侧边栏呈现在内容的左侧,而不是堆叠两个组件?