Neo4j Py2neo中的体插入

Neo4j Py2neo中的体插入,neo4j,py2neo,mongo-connector,Neo4j,Py2neo,Mongo Connector,我正在为mongo connector编写一个自定义文档管理器,以便将mongodb文档复制到neo4j。在这里,我想创建批量关系。我正在使用py2neo2020.0 在以前的版本中似乎有一些选项,但在这个版本中没有。有没有办法在py2neo中创建批量节点和关系?我目前正在研究批量加载功能。在下一版本中将提供一些新功能。在此之前,Cypher UNWIND…CREATE querys是性能的最佳选择。我目前正在开发批量加载功能。在下一版本中将提供一些新功能。在此之前,Cypher UNWIND…

我正在为mongo connector编写一个自定义文档管理器,以便将mongodb文档复制到neo4j。在这里,我想创建批量关系。我正在使用py2neo2020.0


在以前的版本中似乎有一些选项,但在这个版本中没有。有没有办法在py2neo中创建批量节点和关系?我目前正在研究批量加载功能。在下一版本中将提供一些新功能。在此之前,Cypher UNWIND…CREATE querys是性能的最佳选择。

我目前正在开发批量加载功能。在下一版本中将提供一些新功能。在此之前,Cypher UNWIND…CREATE querys是性能的最佳选择。

我强烈建议切换到
neo4j
Python驱动程序,因为它直接受neo4j支持

在任何情况下,您也可以直接在Cypher中执行大容量插入,和/或使用
neo4j
驱动程序从Python中调用该Cypher

我建议先导入节点,然后导入关系。如果您有一个保证的节点唯一标识符,这会有所帮助,因为这样您就可以在加载之前在该属性上设置索引。然后,您可以从CSV(或者更好的是TSV)文件加载节点,如下所示:

// Create constraint on the unique ID - greatly improves performance.
CREATE CONSTRAINT ON (a:my_label) ASSERT a.id IS UNIQUE
;

// Load the nodes, along with any properties you might want, from
// a file in the Neo4j import folder.
USING PERIODIC COMMIT 1000
LOAD CSV WITH HEADERS FROM "file:///my_nodes.tsv" AS tsvLine FIELDTERMINATOR '\t'
CREATE (:my_label{id: toInteger(tsvLine.id), my_field2: tsvLine.my_field2})
;

// Load relationships.
USING PERIODIC COMMIT 1000
LOAD CSV WITH HEADERS FROM "file:///my_relationships.tsv" AS tsvLine FIELDTERMINATOR '\t'
    MATCH(parent_node:my_label)
        WHERE parent_node.id = toInteger(tsvLine.parent)
    MATCH(child_node:my_label)
        WHERE child_node.id = toInteger(tsvLine.child)
    CREATE(parent_node) --> (child_node)
;

我强烈建议切换到
neo4j
Python驱动程序,因为它是由neo4j直接支持的

在任何情况下,您也可以直接在Cypher中执行大容量插入,和/或使用
neo4j
驱动程序从Python中调用该Cypher

我建议先导入节点,然后导入关系。如果您有一个保证的节点唯一标识符,这会有所帮助,因为这样您就可以在加载之前在该属性上设置索引。然后,您可以从CSV(或者更好的是TSV)文件加载节点,如下所示:

// Create constraint on the unique ID - greatly improves performance.
CREATE CONSTRAINT ON (a:my_label) ASSERT a.id IS UNIQUE
;

// Load the nodes, along with any properties you might want, from
// a file in the Neo4j import folder.
USING PERIODIC COMMIT 1000
LOAD CSV WITH HEADERS FROM "file:///my_nodes.tsv" AS tsvLine FIELDTERMINATOR '\t'
CREATE (:my_label{id: toInteger(tsvLine.id), my_field2: tsvLine.my_field2})
;

// Load relationships.
USING PERIODIC COMMIT 1000
LOAD CSV WITH HEADERS FROM "file:///my_relationships.tsv" AS tsvLine FIELDTERMINATOR '\t'
    MATCH(parent_node:my_label)
        WHERE parent_node.id = toInteger(tsvLine.parent)
    MATCH(child_node:my_label)
        WHERE child_node.id = toInteger(tsvLine.child)
    CREATE(parent_node) --> (child_node)
;