0

我有字符串列表,我想将所有元素导入图形数据库。通过说导入我的意思是,我想将字符串设置为节点的属性。名单的规模将是巨大的。那么有没有办法自动化节点命名?因为按照传统方式,如果列表的大小为 100,则必须通过调用 graphDb.createNode() 100 次来创建节点。

4

1 回答 1

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 过程来以较小的批次创建节点。

于 2016-11-15T22:34:30.803 回答