在java中解析Neo4j ExecutionResult dumptoString
我正在使用Neo4j图形数据库和java的Neo4j Cypher api来获取查询结果。dump to string方法将以字符串格式给出执行结果在java中解析Neo4j ExecutionResult dumptoString,java,neo4j,Java,Neo4j,我正在使用Neo4j图形数据库和java的Neo4j Cypher api来获取查询结果。dump to string方法将以字符串格式给出执行结果 GraphDatabaseFactory graphDbFactory = new GraphDatabaseFactory(); GraphDatabaseService graphDb = graphDbFactory.newEmbeddedDatabase("C:/TPNeo4jDB"); ExecutionEngine ex
GraphDatabaseFactory graphDbFactory = new GraphDatabaseFactory();
GraphDatabaseService graphDb = graphDbFactory.newEmbeddedDatabase("C:/TPNeo4jDB");
ExecutionEngine execEngine = new ExecutionEngine(graphDb);
ExecutionResult execResult = execEngine.execute("MATCH (java:JAVA) RETURN java");
String results = execResult.dumpToString();
System.out.println(results);
输出字符串如下所示
+--------------------------+
| a |
+--------------------------+
| Node[12]{type:"java 1"} |
| Node[13]{type:"java 2"} |
+--------------------------+
2 rows
是否有任何默认API以通用方式解析此内容
根据答案,我已经这样做了
ExecutionResult execResult = execEngine.execute("MATCH (java:JAVA) RETURN java");
Iterator<Node> n_column = execResult2.columnAs( "java" );
for ( Node node : IteratorUtil.asIterable( n_column ) )
{
// note: we're grabbing the name property from the node,
// not from the n.name in this case.
String nodeResult = node + ": " + node.getProperty( "type" );
System.out.println("noderesult :"+nodeResult);
}
是的,您可以这样做:
Iterator<Node> javaNodes = execResult.columnAs( "java");
for (Node node : IteratorUtil.asIterable(javaNodes))
{
//do something with the node
}
Iterator javaNodes=execResult.columns(“java”);
for(节点:IteratorUtil.asIterable(javaNodes))
{
//对节点执行一些操作
}
更多信息,包括当您有许多列时要做什么,请参阅
根据评论更新:
Cypher查询是MATCH(java:java)returnjava
,因此列名将是java,该列中返回的值是节点
如果需要type属性,那么查询将是
MATCH(java:java)返回java.type作为type
,然后可以执行列(“type”)
。此列的类型现在将是字符串。execresult.columnAs()应该是正确的列值。这里应该是'type'而不是'java',实际上,您的查询是返回java,因此java是列名。请参阅answerIt中的更新。它正在处理第一个值,之后会引发错误。请查看更新的答案。异常为答案:NotInTransactionException。您需要将这一切打包到一个事务中。文档说明了这一点(我提供的链接)。您还可以查看从该页面引用的内容。
Iterator<Node> javaNodes = execResult.columnAs( "java");
for (Node node : IteratorUtil.asIterable(javaNodes))
{
//do something with the node
}