如何解决在 Neo4j 中将参数传递给 gds.create.graph
如何在 Neo4j 中将参数传递给 gds.create.graph?例如,这个查询有什么问题? (我用的是py2neo)
query = """
CALL gds.graph.create.cypher(
'betweenness','MATCH (n) WHERE n:Criminal AND id(n) in $nodes_in_component
RETURN id(n) AS id,labels(n) AS labels','MATCH (m:Crime)<-[r:INVOLVED_IN]-(n:Criminal)
WHERE id(m) in $nodes_in_component
RETURN id(m) AS source,id(n) AS target,type(r) AS type',parameters:{nodes_in_component: nodes_in_component}
)
YIELD graphName,nodeCount,relationshipCount,createMillis
"""
graph.run(query,parameters= {"nodes_in_component":nodes_in_component}).data()
解决方法
- 我们需要返回两个节点“犯罪”和“犯罪”。如果犯罪节点丢失,我会收到错误
- 参数的语法应包括 {}。例如:{参数:{ node_ids:ext_param }}。另请注意使用不同的名称,如 ext_param。
- 然后在 Python 中,使用 replace 函数替换单词 ext_param,但将列表转换为字符串
query = """
CALL gds.graph.create.cypher(
'betweenness','MATCH (n) WHERE n:Criminal OR n:Crime RETURN id(n) AS id,labels(n) AS labels','MATCH (a:Criminal)-[r:INVOLVED_IN]->(c:Crime) WHERE id(a) in $node_ids RETURN id(a) AS source,id(c) AS target,type(r) AS type',{parameters: { node_ids: ext_param }}
)
YIELD graphName,nodeCount,relationshipCount,createMillis;
"""
ext_param = [5,6,7,8,31]
graph.run(query.replace('ext_param',str(ext_param))).data()
Result:
[{'graphName': 'betweenness','nodeCount': 10,'relationshipCount': 12,'createMillis': 22}]
参考: 查找第 4 部分:here
中的节点标签版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。