gremlin - Tinkerpop/Gremlin:如何加入多个遍历并在主遍历中使用它们的值?
问题描述
我想使用两次遍历的结果a, b
来计算属性的值。我不知道如何将它们加入到combinedTraversal
从原始元素/顶点开始的两个遍历中。
Graph graph = TinkerFactory.createModern();
GraphTraversal a = __.values("age").count().as("count")
.constant(10).as("allCount")
.math("count / allCount")
// .as("a");
GraphTraversal b = __.values("age").count().as("count")
.constant(10).as("allCount")
.math("count / allCount")
// .as("b");
GraphTraversal combinedTraversal = __
.local(a).as("a")
.local(b).as("b")
.math("a * b");
graph.traversal().V()
.has("age")
.property(Cardinality.single, "value", combinedTraversal)
.iterate();
在示例中,遍历 a 和 b 假设从给定顶点开始并计算它们的值。当我使用local()
遍历的位置时,我不知道如何退回到原点。
sideEffect()
另一方面,使用不引用当前元素,而是将所有元素的值计算到映射中。
有没有办法建立这样一个combinedTraversal
?(特意选择了“复杂”的计算遍历,当然有更简单的方法来解决这个例子)
谢谢你。
解决方案
我找到了一个解决方案:投影 https://tinkerpop.apache.org/docs/current/reference/#project-step
GraphTraversal combinedTraversal = __.project("a", "b").by(a).by(b).math("a * b");
推荐阅读
- javascript - 从 Javascript 模块中的父范围继承变量
- json - 无法使用 JSON.parse 解析 json 字符串?
- sql - 我想在访问 sql 中写一个 if else 语句,我确实写了一个代码,但它不工作
- azure - 无法在 Azure 分析服务中添加/连接 CosmosDB
- python-3.x - 无法从特定 python 路径创建 MSI 和 exe 文件
- kubernetes - 这个 Yaml 文件是什么版本的 Kubernetes Dashboard(1.6 或 1.7)?
- python - 如果 Pyramid 会话是单向散列而不是存储在服务器端,那么数据来自哪里?
- codemirror - 如何使用 CodeMirror 隐藏字符范围?
- javascript - 不变违规:尝试使用 Jest/Enzyme 测试 React 组件时元素类型无效错误
- python - 列表到数据框,列中列表中的每个元素