获取 neo4j java 驱动程序中节点的属性

Pav*_*ala 5 java neo4j neo4j-java-api

我正在使用neo4j,我有带有neo4j服务器的linux笔记本电脑,我完成了所有配置,所以我可以从mac访问ip/浏览器,之后我尝试从我正在使用的java项目远程使用它java-driver 因为neo4j-enbedded似乎不支持远程连接,所以问题是如何获取所有节点并打印属性:

在下面的代码中我有 match(p:Book)return p

如果我尝试迭代“p”,我不会获得属性,但我正在使用类似

match( p:Book) 返回 p.title,然后我就可以看到 title 属性的值,

我有3个节点书籍: Book( title:"book1",author:"author1" ) Book( title:"book2",author:"author2" ) Book( title:"book3",author:"author3" )

try ( Session session = Neo4jDriver.getInstance( URI.create( "bolt://10.0.0.17:7687" ),
                "neo4j", "pass" ).session() )
        {
       StatementResult result = session.run( "match(p:Book) return p" );

 while ( result.hasNext() )
{
    Record res = result.next();

    System.err.println(" --> "+res.get(0) ); 
}  }
Run Code Online (Sandbox Code Playgroud)

这仅打印类似以下内容:
->node<0>
->node<1>
->node<2>

log*_*ima 1

如果您在查询中返回一个节点,Neo4j 的驱动程序将为您提供一个 Node 对象。

该对象有一些方法来检索内部数据:

  • get(key) :获取key节点的值。您将收到一个Value对象,该对象具有某种方法可以将此对象转换为string, boolean, ...
  • contains(key) :了解节点是否有key属性
  • keys() :获取节点属性列表
  • ...

更多详细信息可以在这里找到: https: //github.com/neo4j/neo4j-java-driver/blob/1.6/driver/src/main/java/org/neo4j/driver/v1/types/MapAccessor.java

在你的例子中,你只是打印 Node 对象,所以你正在调用它的toString()方法,并且这个方法不会打印节点的所有值,而只是打印它的 id。

  • `res` 是一个 [Record](http://neo4j.com/docs/api/java-driver/current/org/neo4j/driver/v1/Record.html),而不是一个 [Node](http:// neo4j.com/docs/api/java-driver/current/)。因此,“res.get(0)”获取记录中的第一个(在本例中是唯一的)值,这是您感兴趣的节点。 (2认同)