Neo4j Cypher查询:匹配与特定属性共享关系的所有节点对

Neo4j Cypher查询:匹配与特定属性共享关系的所有节点对,neo4j,cypher,Neo4j,Cypher,我构建了一个非常简单的图,它有不同类型的节点和一种类型的关系,名为MAPPING1TO1。然后,每对节点共享相同类型的关系。MAPPING1TO1只有一个属性,名为EventToTag。此属性是字符串的数组,格式如下:(n,m),其中n是三位或两位整数,m是两位整数。例如,给定一个泛型关系r,其属性EventoTag可能如下所示:(001,11),(002,12),(003,13) 我将用Cypher编写一个查询,返回共享关系的所有节点对,这些节点满足以下条件:给定输入中的字符串x,数组属性Ev

我构建了一个非常简单的图,它有不同类型的节点和一种类型的关系,名为MAPPING1TO1。然后,每对节点共享相同类型的关系。MAPPING1TO1只有一个属性,名为EventToTag。此属性是字符串的数组,格式如下:(n,m),其中n是三位或两位整数,m是两位整数。例如,给定一个泛型关系r,其属性EventoTag可能如下所示:(001,11),(002,12),(003,13)

我将用Cypher编写一个查询,返回共享关系的所有节点对,这些节点满足以下条件:给定输入中的字符串x,数组属性EventoTag中存在一个字符串,其中包含x作为子字符串

我试图通过以下查询解决此问题:

WITH "912" AS event 
MATCH p=(a)-[r]->(b)
WHERE ALL(item in r.EventoTag WHERE SUBSTRING(item,0,4) CONTAINS event)
RETURN p
查询“有效”,但需要的时间太多。我有不正确的关系,即不满足上述条件。要制作一个示例,请查看结果的下图:

所选关系是错误的,而其他关系是正确的。这是错误的,因为它不满足条件(它的EventoTag属性不包含子字符串“912”),但它仍然被带到最终结果中,我不理解为什么


你能帮我吗?谢谢。

这可能是因为Neo4j浏览器功能获取查询返回的所有节点,并查找和填充它们之间存在的所有关系(无论是否返回这些关系)


从浏览器设置(左下角的齿轮图标)中,滚动至底部并取消选中“连接结果节点”。如果重新运行查询,则很可能不会返回关系。

这可能是由于Neo4j浏览器功能获取查询返回的所有节点,并查找和填充它们之间存在的所有关系(无论是否返回这些关系)

从浏览器设置(左下角的齿轮图标)中,滚动至底部并取消选中“连接结果节点”。如果重新运行查询,则很可能不会返回关系