Neo4J-根据节点属性值选择MATCH语句

时间:2019-12-04 13:32:22

标签: graph neo4j properties 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查询的实际语义。我使它们有所不同只是为了表明它们将做不同的事情,但是返回相同类型的节点和关系。

1 个答案:

答案 0 :(得分:0)

这样的东西适合您的需求吗?

顺便说一句...在您使用npm uninstall的示例中,您返回的是n.nodeType == "B",但在查询中未将其匹配。我在下面的示例中使用了不同的关系类型。

r