我正在尝试在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)那么,我该如何使用批处理来添加关系呢?
发布于 2019-08-08 16:36:01
您的查询有几个语法问题。
在下面的代码行中,没有提到您试图与参数row.from和row.to匹配的节点属性。
MATCH (from:SINGLE_NODE {{row.from}})
MATCH (to:SINGLE_NODE {{row.to}})从它们的值来看,我猜它们应该是gender属性,查询应该类似于:
MATCH (from:SINGLE_NODE {{gender:row.from}})
MATCH (to:SINGLE_NODE {{gender:row.to}})在下面的语句中,它应该是CREATE OR MERGE,并且在第二行中,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发布于 2019-08-08 18:56:41
我现在找到了答案,所以正确的语法是这样的。
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)https://stackoverflow.com/questions/57407926
复制相似问题