我想使用neo4j的python驱动程序在两个节点之间创建一个新的边。
def cypher_orchestration(tx, start_identifier: str, end_identifier:str, edge_type: str):
start_node = node_match(tx, start_identifier).single()
end_node = node_match(tx, end_identifier).single()
edge = create_edge(tx, start_node, edge_type, end_node)
我创建了“node_match”函数,可以成功接收搜索到的节点。但是现在我在创建两个节点之间的边时遇到了问题。
我所做的是创建“create_edge”函数,看起来像这样:
from neo4j.graph import Node
def create_edge(tx, start_node: Node, edge_type: str, end_node: Node):
result = tx.run(f"""
CALL apoc.merge.relationship($start_node, $edge_type, {{}}, $end_node, {{}}) yield rel
return rel
""", start_node=start_node, edge_type=edge_type, end_node=end_node)
return result
不幸的是,我不明白,如何将之前查询的节点作为参数传递给查询。如何将Node Object传递给neo4j?这可能吗
我也知道,我可以在我的“创建边缘”函数中再次匹配两个节点,但我相信(并希望)必须有更多的...更优雅的方式。如果有人知道如何实现这一点或知道类似的方式,我很乐意向你学习:)
谢谢你的帮助!你好,奥特诺诺曼
1条答案
按热度按时间cs7cruho1#
不能将节点或关系对象作为查询参数传递。
在
apoc.merge.relationship
的情况下,开始和结束节点在Cypher查询本身中定义。它看起来像: