如何知道apoc过程输出名称

时间:2016-09-06 08:31:12

标签: stored-procedures neo4j cypher

我正在使用一些非常棒的apoc.refactor程序。我注意到在documentation中没有提到可以与YIELDS一起使用的输出变量名称。

我发现refactor.mergeNodes输出node(作为新的合并节点),但我无法确定refactor.to或{{1}的输出名称是什么}}。我尝试refactor.fromrel但没有成功。我不是一个java程序员,但检查代码(特别是RelationshipRefactorResult.java)我认为' rel'是那个要去的人。

这是我正在尝试的查询:

newRel

这是输出消息:

MATCH ()-[r]->(), (n)
WHERE id(r) = 16 AND id(n) = 4
CALL apoc.refactor.from(r,n) YIELD rel
RETURN rel

2 个答案:

答案 0 :(得分:8)

很抱歉这是当前文档的缺点。

我们希望自动化/改进它。

如果CALL dbms.procedures()

,您可以看到输出类型
CALL dbms.procedures() YIELD name, signature
WITH * WHERE name STARTS WITH 'apoc.refactor'
RETURN name, signature

签名始终为name :: TYPE 例如在你的情况下:

apoc.refactor.to(relationship :: RELATIONSHIP?, newNode :: NODE?) :: (input :: INTEGER?, output :: RELATIONSHIP?, error :: STRING?)

参数:

  • 名称:relationship,类型:关系
  • 名称:newNode,类型:节点

输出栏:

  • 名称:input,类型:整数
  • 名称:output,类型关系
  • 名称:error,类型:字符串

答案 1 :(得分:0)

以迈克尔的答案为基础,这是一个小工具。 只是一个查询,为这些查询构建了整洁的文档。 :) 也许它也可以适用于其他程序。

//EXPOSED YIELD PARAMETERS OUTPUT FROM  apoc.periodic...
CALL dbms.procedures() YIELD name, signature
WITH * WHERE name STARTS WITH 'apoc.periodic'
RETURN name AS procedure, 'YIELD', 
      tail(
        apoc.text.split( 
          toString(apoc.text.split(signature, '\\)')[1])
        , '[^a-z]+[^a-zA-Z]*[^a-z]')
      ) AS exposed_parameters
相关问题