如何使用循环在neo4j中自动命名节点?

时间:2016-11-15 22:01:55

标签: java loops neo4j graph-databases neo4j-java-api

我有String列表,我想将所有元素导入图数据库。通过说导入我的意思是,我想将String设置为Node的属性。列表的大小将是巨大的。那么有什么方法可以自动化Node命名吗?因为通过传统方式,如果列表的大小为100,则必须通过调用graphDb.createNode()100次来创建节点。

1 个答案:

答案 0 :(得分:0)

您可以将字符串列表作为参数传递给Cypher查询。这是一个示例代码段:

List<String> names = ...;
try ( Transaction tx = graphDb.beginTx() )
{
    String queryString = "UNWIND {names} AS name CREATE (n:User {name: name})";
    Map<String, Object> parameters = new HashMap<>();
    parameters.put( "names", names );
    graphDb.execute( queryString, parameters );
    tx.success();
}

注意:如果字符串列表“太长”,则上述方法将无法工作,因为服务器可能会耗尽内存,尝试在单个事务中执行所有处理。在这种情况下,您可能希望使用像apoc.periodic.iterate这样的APOC过程来创建较小批量的节点。