Graph Neo4J-基于节点属性值选择匹配语句
我试图根据初始节点的属性在特定路径上进行匹配 例如,我有一个节点,Graph Neo4J-基于节点属性值选择匹配语句,graph,neo4j,properties,match,Graph,Neo4j,Properties,Match,我试图根据初始节点的属性在特定路径上进行匹配 例如,我有一个节点,n,它有一个名为nodeType的属性。如果节点类型为A,则使用第一个匹配,如果节点类型为B,则使用第二个匹配 我已经使用FOREACH尝试了这一点。因此,当nodeType为A时,则返回该节点及其与其他节点的关系。如果返回类型为B,则将其关系返回给其他节点。在这种情况下,它只能是一个或另一个,因此只有一个将返回结果。然而,这可能是我的语法错误,但是当我要求它执行匹配查询时,我无法在FOREACH中定义变量 任何帮助都会很好 MA
n
,它有一个名为nodeType
的属性。如果节点类型为A
,则使用第一个匹配,如果节点类型为B
,则使用第二个匹配
我已经使用FOREACH
尝试了这一点。因此,当nodeType为A时,则返回该节点及其与其他节点的关系。如果返回类型为B,则将其关系返回给其他节点。在这种情况下,它只能是一个或另一个,因此只有一个将返回结果。然而,这可能是我的语法错误,但是当我要求它执行匹配查询时,我无法在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)
注意:这不是我的匹配查询的实际语义。我把它们做得不同只是为了表明它们会做不同的事情,但返回相同类型的节点和关系。这样的东西适合您的需要吗 顺便说一句。。。在使用
n.nodeType==“B”
的示例中,返回的是r
,但在查询中没有匹配它。我在下面的示例中使用了不同的关系类型
MATCH (n:testNode)
RETURN
CASE
WHEN n.nodeType = "A" THEN [(n)-[r:REL1]-(n2:testNode)| {n:n, r: type(r), n2: n2}]
WHEN n.nodeType = "B" THEN [(n)-[r:REL2]-(n2:testNode)| {n:n, r: type(r), n2: n2}]
END AS nodes
啊,所以我在第二份声明中漏掉了r。我的实际匹配语句更长,并且包含r。我可以更新。我会试试你的建议,看看是否对我的问题有效。另外,如果你好奇的话,我正在我最近的问题中寻找另一种做同样事情的方法。谢谢你的帮助!