我正在使用一些非常棒的apoc.refactor
程序。我注意到在documentation中没有提到可以与YIELDS
一起使用的输出变量名称。
我发现refactor.mergeNodes
输出node
(作为新的合并节点),但我无法确定refactor.to
或{{1}的输出名称是什么}}。我尝试refactor.from
和rel
但没有成功。我不是一个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
答案 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