我正在使用一些令人敬畏的apoc.refactor
程序。我注意到在documentation中没有提到可以与YIELDS
一起使用的输出变量名称。
我发现refactor.mergeNodes
输出node
(作为新的合并节点),但我无法弄清楚refactor.to
或refactor.from
的输出名称是什么。我尝试了rel
和newRel
没有成功。我不是一个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"
对不起,这是当前文档的缺点。
我们希望自动化/改进它。
如果你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
,类型:字符串基于迈克尔的答案,这是一个小工具。只是为这些构建整洁文档的查询。 :)也许它可以适应其他程序的工作。
//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