java - Gremlin:从 edgeId 进出顶点,包括边缘属性
问题描述
给定 edgeId 我想用边缘属性进出顶点。
我尝试了以下方法:
final String edgeId = "edge-nk1-to-nk2";
g.addV("nk_node").property(T.id, "nk1").property("name", "name-nk1").as("n1")
.addV("nk_node").property(T.id, "nk2").property("name", "name-nk2").as("n2")
.addE("friend").property(T.id, edgeId).property("name", "edge-name-prop-value").from("n1").to("n2")
.next();
System.out.println("---------------------------------------------------------------------------------");
final Object usingBothVOutput = g.E(edgeId).as("edge")
.bothV().as("nodes")
.select("edge", "nodes").by(valueMap(true))
.toList();
System.out.println(usingBothVOutput);
System.out.println("--------------------------------------------------------------------------------");
final Path path = g.E(edgeId).as("edge").bothV().path().next();
System.out.println(path);
带输出:
---------------------------------------------------------------------------------
[{edge={id=edge-nk1-to-nk2, label=friend, name=edge-name-prop-value}, nodes={id=nk1, label=nk_node, name=[name-nk1]}}, {edge={id=edge-nk1-to-nk2, label=friend, name=edge-name-prop-value}, nodes={id=nk2, label=nk_node, name=[name-nk2]}}]
--------------------------------------------------------------------------------
path[e[edge-nk1-to-nk2][nk1-friend->nk2], v[nk1]]
第一个查询输出具有两个节点,但没有指示哪个是 IN 哪个是 OUT。路径查询明确说明了 IN 和 OUT 顶点,但是,它没有边的属性。
解决方案
如果您想使用该path
步骤,您可以添加by
:
g.E(edgeId).as("edge").bothV().path().by(valueMap(true))
此外,您可以尝试使用project
:
g.E(edgeId).project("out", "in").by(outV().valueMap(true)).by(inV().valueMap(true))
推荐阅读
- c - 仅在 for 循环内部的 C 指针算术分段错误
- ios - iOS12如何设置NFC后台读取关联域
- excel - 在电源查询编辑器的存储过程中使用单元格中的值作为参数
- symfony - Symfony 2:如何防止多个用户同时编辑同一个表单?
- .net - 无法加载 DLL 'Microsoft.Quantum.Simulator.Runtime.dll' (CentOS 7)
- javascript - 在 redux-saga-beginner-tutorial 中找不到模块“babelify”
- spring-mvc - 春季启动错误org.springframework.beans.factory.BeanCreationException数据源
- python-3.x - Pandas 在 CSV 中删除重复项
- php - Plesk 17 更改/添加用于网站更新的 httpdocs
- xml - Odoo 10:为自定义模块创建安全规则