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

How to automate Node naming in neo4j using loop?

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

您可以将字符串列表作为参数传递给 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();
}

注意:如果字符串列表是 "too long",上述方法将不起作用,因为服务器可能 运行 内存不足,试图在单个事务中完成所有处理。在这种情况下,您可能需要使用像 apoc.periodic.iterate 这样的 APOC 过程来创建较小批量的节点。