目前有一个密码查询方法
public static void RunQuery(String _query)
{
Properties prop = new Properties();
final String DB_PATH = "path/to/db"
GraphDatabaseService graphDb = new GraphDatabaseFactory().newEmbeddedDatabase(DB_PATH);
ExecutionEngine engine = new ExecutionEngine(graphDb);
ExecutionResult result = engine.execute(_query);
for(Map<String,Object> map : result)
{
System.out.println(map.toString());
}
graphDb.shutdown();
}
然而,这只能让我得到这样的结果:
{a=Node[11303]}
{a=Node[11341]}
{a=Node[11343]}
{a=Node[11347]}
{a=Node[11349]}
{a=Node[11378]}
如何扩充它以吐出整个查询结果,就像cypher shell一样?
答案 0 :(得分:2)
您的查询是什么样的。返回的Map<String, Object>
将包含您返回的变量的键。 Object可以是Path,Node或Relationship,这只会调用它们上的本机toString()
,它们在Java代码中只返回节点ID。您必须构建自己的打印机,这将获得属性键并迭代它们中的每一个。
for (String key : node.getPropertyKeys()) {
System.out.println("Key: " + key + ", Value: " + node.getProperty(key));
}
答案 1 :(得分:-1)
这取决于您的查询的RETURN
..
例如,如果您有这样的查询:
_query="Start x= node(someIndex) Match x-[rel:SOMETHING]-n Return n";
所以,你的代码可以是
ExecutionResult result = engine.execute(_query);
Iterator<Node> n_column = result.columnAs("n");
for (Node outputNode: IteratorUtil.asIterable(n_column)) {
System.out.println(outputNode.getProperty("yourKey","defaultValueIfNull"));
}