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