我正在尝试根据初始节点的属性在特定路径上进行匹配。
例如我有一个节点n
,它的属性为nodeType
。如果节点类型为A
,则使用第一个MATCH;如果节点类型为B
,则使用第二个MATCH。
我尝试使用FOREACH
进行此操作。因此,当nodeType为A的情况下,则返回该节点及其与其他节点的关系。如果返回类型为B,则将其关系返回到其他节点。在这种情况下,只能是一个或另一个,因此只有一个会返回结果。但是,这可能是我的语法错误,但是当我要求它执行MATCH查询时,我无法在FOREACH
中定义变量。
任何帮助都会很棒。
MATCH (n: testNode)
WITH n
FOREACH(_ IN CASE WHEN n.nodeType == "A" THEN [MATCH (n)-[r]-(n2: testNode)] ELSE [] END | WITH n, r, n2)
FOREACH(_ IN CASE WHEN n.nodeType == "B" THEN [MATCH (n)--(n0)-[r]-(n2: testNode)] ELSE [] END | WITH n, r, n2)
WITH n, r, n2
RETURN n, COLLECT(r), COLLECT(n2)
注意:这不是我的MATCH查询的实际语义。我使它们有所不同只是为了表明它们将做不同的事情,但是返回相同类型的节点和关系。
答案 0 :(得分:0)
这样的东西适合您的需求吗?
顺便说一句...在您使用npm uninstall
的示例中,您返回的是n.nodeType == "B"
,但在查询中未将其匹配。我在下面的示例中使用了不同的关系类型。
r