Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Graph Neo4J-基于节点属性值选择匹配语句_Graph_Neo4j_Properties_Match - Fatal编程技术网

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。我可以更新。我会试试你的建议,看看是否对我的问题有效。另外,如果你好奇的话,我正在我最近的问题中寻找另一种做同样事情的方法。谢谢你的帮助!