微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Neo4j 中将参数传递给 gds.create.graph

如何解决在 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()

解决方法

  1. 我们需要返回两个节点“犯罪”和“犯罪”。如果犯罪节点丢失,我会收到错误
  2. 参数的语法应包括 {}。例如:{参数:{ node_ids:ext_param }}。另请注意使用不同的名称,如 ext_param。
  3. 然后在 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 举报,一经查实,本站将立刻删除。