如何知道apoc过程的输出名称

问题描述 投票:5回答:2

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

我发现refactor.mergeNodes输出node(作为新的合并节点),但我无法弄清楚refactor.torefactor.from的输出名称是什么。我尝试了relnewRel没有成功。我不是一个java程序员,但检查代码(尤其是RelationshipRefactorResult.java)我认为'rel'是最好的。

这是我正在尝试的查询:

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

这是输出消息:

Unknown procedure output: `rel` (line 3, column 36 (offset: 96))
"RETURN rel"
stored-procedures neo4j cypher
2个回答
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,类型:字符串

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
© www.soinside.com 2019 - 2024. All rights reserved.