Java 如何使用ExecutionEngine获取neo4j中的关系列表?

Java 如何使用ExecutionEngine获取neo4j中的关系列表?,java,neo4j,Java,Neo4j,我正在使用java中的ExecutionEngine对neo4j数据库运行cypher查询 我想获取节点存在的所有关系 我的原始密码是: MATCH(n:Phone{id:'you'})MATCH n-[r:calling]>m其中nm返回n,r,m 我在网上看到了很多示例,它们描述了如何从查询中获得NOE的结果,但我想返回节点n和m以及关系r 我是否需要执行与仅返回节点不同的操作? 下面是一些代码,用于说明如何获得这些关系。我还没有测试过这个,但它是正确的通用方法 String query =

我正在使用java中的
ExecutionEngine
对neo4j数据库运行cypher查询

我想获取节点存在的所有关系

我的原始密码是:

MATCH(n:Phone{id:'you'})MATCH n-[r:calling]>m其中nm返回n,r,m

我在网上看到了很多示例,它们描述了如何从查询中获得NOE的结果,但我想返回节点
n
m
以及关系
r

我是否需要执行与仅返回节点不同的操作?

下面是一些代码,用于说明如何获得这些关系。我还没有测试过这个,但它是正确的通用方法

String query = "MATCH (n:Phone{id:'you'}) MATCH n-[r:calling]->m WHERE n<>m RETURN n, r, m";

ExecutionEngine engine = new ExecutionEngine( db );

ExecutionResult result;
try ( Transaction ignored = db.beginTx() ) {
    result = engine.execute(query);
    ResourceIterator<Relationship> rels = result.columnAs("r");
    while(rels.hasNext()) { 
        Relationship r = rels.next();
        // Do something cool here.
    } 
} catch(Exception exc) { System.err.println("ERHMAGEHRD!!!"); }
String query=“MATCH(n:Phone{id:'you'})MATCH n-[r:calling]->m其中nm返回n,r,m”;
ExecutionEngine=新ExecutionEngine(db);
执行结果;
try(事务被忽略=db.beginTx()){
结果=engine.execute(查询);
ResourceIterator rels=result.columnAs(“r”);
而(rels.hasNext()){
关系r=rels.next();
//在这里做点酷的事。
} 
}catch(异常exc){System.err.println(“ERHMAGEHRD!!!”);}
基本上,使用
columnAs()
方法获取结果列。请注意,这里是“r”,因为您的查询将关系返回到一个名为的变量中

好的,现在回答关于查询的问题。在java中,我喜欢从查询中返回尽可能少的内容。如果您需要它,它应该在return子句中。如果你没有,那就不应该了


如果需要关系,请返回它们。不要试图通过返回节点,然后从那里查看来获取关系。这种方法是可行的,但直接处理关系更有意义。

实际问题是什么?您已经返回了n的所有“调用”关系。