-2
我想知道如何在Java控制台中返回节点名称而不是节点ID。Neo4J - 返回节点名称而不是ID
下面的输出显示在控制台:
所需的输出应该是这样的:
只是没有所有的信息,但只与节点名称(其中机场名称相同)。
我的Java代码如下所示:
package com.routesNeo4j;
import org.neo4j.driver.v1.*;
import java.util.ArrayList;
import java.util.List;
/**
* Created by e on 11.06.17.
*/
public class Neo4JRouting implements AutoCloseable, Neo4J_Connector {
static Driver driver;
public Neo4JRouting(String startAirport, String destinationAirport, StatementResult shortestPath) {
driver = GraphDatabase.driver("bolt://ec2-13-58-101-13.us-east-2.compute.amazonaws.com:7687",
AuthTokens.basic("neo4j", "Einloggen_123"));
try(Session session = driver.session()) {
shortestPath = session.run("MATCH (a:" + startAirport.toLowerCase() + "), (b:" + destinationAirport.toLowerCase()
+ "), p = allShortestPaths((a)-[r*1..4]-(b)) UNWIND rels(p) AS rel RETURN nodes(p), sum(rel.weight) " +
"AS weight ORDER BY sum(rel.weight)");
List<Record> storeList = storeList(shortestPath);
while (shortestPath.hasNext()) {
System.out.println(shortestPath.next().toString());
}
System.out.println(storeList);
} catch (Exception e) {
e.printStackTrace();
}
}
public List<Record> storeList(StatementResult statementResult) {
List<Record> list = new ArrayList<>();
while (statementResult.hasNext()) {
list.add(statementResult.next());
}
return list;
}
@Override
public Driver runDriver(String user, AuthToken basicAuthToken) throws Exception {
return null;
}
@Override
public void close() throws Exception {
}
}
我很期待你的答案。非常感谢!
IHDSMutator < - 这是什么?查看它,我没有找到任何包或lib的。你能解释一下吗? –
这只是我用来返回结果的一个示例结构。它实际上是一个类似于XML文档的分层数据结构(HDS)。这不是我的例子的重点,关键是你必须处理从查询中得到的结果,以便从中提取实际数据。事实上,如果您只想将结果打印到控制台,您甚至不需要一个结构来保留结果。 –