0

目前有一个密码查询方法

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 一样吐出整个查询结果?

4

2 回答 2

2

您的查询是什么样的。返回的Map<String, Object>将具有您返回的变量的键。对象可以是路径、节点或关系,这只会toString()在它们上调用本机,在 Java 代码中它只返回节点 ID。您必须构建自己的打印机,该打印机将获取属性键并遍历它们中的每一个。

for (String key : node.getPropertyKeys()) {
    System.out.println("Key: " + key + ", Value: " +  node.getProperty(key));
}
于 2013-07-01T20:13:44.167 回答
-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"));
            }
于 2013-07-01T20:43:19.987 回答