Neo4j如何使用Java驱动程序通过密码查询来检索节点列表

时间:2018-10-01 12:46:43

标签: neo4j

    StatementResult result = graphBasicService.readStatement(query);
    while (result.hasNext())
    {
        Record record = result.next();
        // Values can be extracted from a record by index or name.
        System.out.println("nodes: "+record.asMap().values());
    }

在上面的代码示例中,我试图检索具有值{mobile,status}的节点。尽管在浏览器上我得到的是List,但上面的代码却只能得到一个值。(一个手机号码)。

关于我获得的更多结果,打印为

  

移动设备:[node <9>]

这里9代表什么?以及如何检索节点列表以打印手机号码。

如果您需要查询:

  

MATCH(n:User {mobile:“ 9999999”})-[r:CONTACT]->(m:User   {withm:“ true”})-[r2:CONTACT]->(n)返回m

注意: graphBasicService是我执行上述查询的自定义方法。

问题摘要:我正在尝试检索和打印节点列表,但无法这样做。

2 个答案:

答案 0 :(得分:1)

我在这里没有看到任何列表。您的查询中没有collect(),也没有其他任何可以产生列表的函数或过程。您只是获得了一系列结果记录。

通过该查询,每条记录将获得一个节点,因此,如果需要列表,则可以在循环外创建一个列表,然后将该节点添加到循环内的列表中,或者如果要修改查询本身,请使用RETURN collect(m) as users(或者,如果您只想要数字,请使用RETURN collect(m.mobile)。如果执行此操作,则将获得一条带有节点列表(或移动电话号码)的单条记录。 / p>

答案 1 :(得分:0)

不用逐条解析,您可以使用list()一次性获取所有数据,然后进行处理。

 List<Record> recordList = result.list();
 for (Record record : recordList) { 
   //Parsing code here
 }

请参考: https://neo4j.com/docs/api/java-driver/1.0/org/neo4j/driver/v1/StatementResult.html#list--