繁体   English   中英

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

[英]getting properties of a node in neo4j java driver

我正在使用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) ); 
}  }

这只是打印如下内容:
->节点<0>
->节点<1>
->节点<2>

接下来,您需要从节点中提取值,如下所示:

List<Pair<String,Value>> values = res.fields();
for (Pair<String,Value> nameValue: values) {
    if ("p".equals(nameValue.key())) {  // you named your node "p"
        Value value = nameValue.value();
        // print Book title and author
        String title = value.get("title").asString();
        String author = value.get("author").asString();
    }
}

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

这个对象有一些方法来检索里面的数据:

  • get(key) : 获取节点的key 您将收到一个Value对象,该对象有一些方法可以将此对象转换为stringboolean 、...
  • 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。

您可以使用此 traitement,您将获得 Object 列表中的所有结果:

String cypherQuery  = "match(p:Book) return p";
List<Map<String,Object>> nodeList=  new ArrayList<>();
StatementResult result = session .run( cypherQuery);
while (result.hasNext()) {
    nodeList.add(result.next().fields().get(0).value().asMap());
}
return nodeList;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM