(Neo4j-driver) - 如何批量插入关系 Python
(Neo4j-driver) - How to do batch insert relationship with Python
我正在尝试批量创建 neo4j 数据库中节点之间的关系。
我正在尝试使用此代码,但它不起作用!
relations = [{'from': 'man', 'to': 'woman', 'properties': {'cost': 0}},
{'from': 'woman', 'to': 'baby', 'properties': {'cost': 0}]
query = """
UNWIND {{relations}} as row
MATCH (from:SINGLE_NODE {{row.from}})
MATCH (to:SINGLE_NODE {{row.to}})
CREATE/MERGE (from)-[rel:IS_CONNECTED]->(to)
(ON CREATE) SET rel += row.properties
""".format(relations=relations)
session.run(query, relations=relations)
那么我怎样才能使用批处理添加关系呢?
您的查询存在几个语法问题。
在下一行中没有提到您试图与参数 row.from 和 row.to 匹配的节点 属性。
MATCH (from:SINGLE_NODE {{row.from}})
MATCH (to:SINGLE_NODE {{row.to}})
根据它们的值,我猜这些应该是性别 属性 并且查询应该类似于:
MATCH (from:SINGLE_NODE {{gender:row.from}})
MATCH (to:SINGLE_NODE {{gender:row.to}})
在下面的语句中,它应该是CREATE OR MERGE,并且在第二行,ON CREATE 两边没有大括号。仅当您在第一行使用 MERGE 时才使用 ON CREATE,否则只需使用 SET。
CREATE/MERGE (from)-[rel:IS_CONNECTED]->(to)
(ON CREATE) SET rel += row.properties
所以它应该是其中之一:
CREATE (from)-[rel:IS_CONNECTED]->(to)
SET rel += row.properties
或
MERGE (from)-[rel:IS_CONNECTED]->(to)
ON CREATE SET rel += row.properties
我现在找到了答案,所以正确的语法是这样的。
query = """
UNWIND {{relations}} as row
MATCH (from:SINGLE_NODE {{name:row.from}})
MATCH (to:SINGLE_NODE {{name:row.to}})
MERGE (from)-[rel:IS_CONNECTED]->(to)
ON CREATE SET rel += row.properties
""".format(relations=relations)
session.run(query, relations=relations)
我正在尝试批量创建 neo4j 数据库中节点之间的关系。 我正在尝试使用此代码,但它不起作用!
relations = [{'from': 'man', 'to': 'woman', 'properties': {'cost': 0}},
{'from': 'woman', 'to': 'baby', 'properties': {'cost': 0}]
query = """
UNWIND {{relations}} as row
MATCH (from:SINGLE_NODE {{row.from}})
MATCH (to:SINGLE_NODE {{row.to}})
CREATE/MERGE (from)-[rel:IS_CONNECTED]->(to)
(ON CREATE) SET rel += row.properties
""".format(relations=relations)
session.run(query, relations=relations)
那么我怎样才能使用批处理添加关系呢?
您的查询存在几个语法问题。
在下一行中没有提到您试图与参数 row.from 和 row.to 匹配的节点 属性。
MATCH (from:SINGLE_NODE {{row.from}})
MATCH (to:SINGLE_NODE {{row.to}})
根据它们的值,我猜这些应该是性别 属性 并且查询应该类似于:
MATCH (from:SINGLE_NODE {{gender:row.from}})
MATCH (to:SINGLE_NODE {{gender:row.to}})
在下面的语句中,它应该是CREATE OR MERGE,并且在第二行,ON CREATE 两边没有大括号。仅当您在第一行使用 MERGE 时才使用 ON CREATE,否则只需使用 SET。
CREATE/MERGE (from)-[rel:IS_CONNECTED]->(to)
(ON CREATE) SET rel += row.properties
所以它应该是其中之一:
CREATE (from)-[rel:IS_CONNECTED]->(to)
SET rel += row.properties
或
MERGE (from)-[rel:IS_CONNECTED]->(to)
ON CREATE SET rel += row.properties
我现在找到了答案,所以正确的语法是这样的。
query = """
UNWIND {{relations}} as row
MATCH (from:SINGLE_NODE {{name:row.from}})
MATCH (to:SINGLE_NODE {{name:row.to}})
MERGE (from)-[rel:IS_CONNECTED]->(to)
ON CREATE SET rel += row.properties
""".format(relations=relations)
session.run(query, relations=relations)