【发布时间】:2019-12-04 13:32:22
【问题描述】:
我正在尝试根据初始节点的属性在特定路径上进行 MATCH。
例如我有一个节点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 查询的实际语义。我让它们不同只是为了表明它们会做不同的事情,但返回相同类型的节点和关系。
【问题讨论】:
标签: graph neo4j properties match