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
Neo4J(Cypher)查询以查找不遵循模式的所有路径_Neo4j_Cypher - Fatal编程技术网

Neo4J(Cypher)查询以查找不遵循模式的所有路径

Neo4J(Cypher)查询以查找不遵循模式的所有路径,neo4j,cypher,Neo4j,Cypher,我有以下图表: 我想获取从标签1到标签5的路径,该路径不遵循预定义的模式。特别是,我希望得到不遵循模式的路径:Label\u 1->Label\u 2->Label\u 3->Label\u 4->Label\u 5 如图所示,下分支(在标签1之后)遵循此模式,而上分支不遵循此模式,因为我们有Label\u 1->Label\u 2->Label\u 4->Label\u 5 这意味着我正在搜索一个将返回的查询:Label\u 1->Label\u 2->Label\u 4->Label\u

我有以下图表:

我想获取从标签1到标签5的路径,该路径不遵循预定义的模式。特别是,我希望得到不遵循模式的路径:
Label\u 1->Label\u 2->Label\u 3->Label\u 4->Label\u 5

如图所示,下分支(在标签1之后)遵循此模式,而上分支不遵循此模式,因为我们有
Label\u 1->Label\u 2->Label\u 4->Label\u 5

这意味着我正在搜索一个将返回的查询:
Label\u 1->Label\u 2->Label\u 4->Label\u 5

我尝试了以下查询,但此查询不返回任何结果

MATCH p=(e1n:Label_1)-[*]->(e2:Label_5)
WHERE NOT (:Label_1)-->(:Label_2)-->(:Label_3)-->(:Label_4)-->(:Label_5)
RETURN p
由于我是Neo4j和Cypher的新手,我想问一下如何编写这样的查询,以及为什么我的WHERE NOT方法不起作用

对于创建,我使用了以下创建命令:

CREATE (a:Label_1 {name: "Label_1"})
CREATE (b:Label_2 {name: "Label_2"})
CREATE (c:Label_2 {name: "Label_2"})
CREATE (d:Label_3 {name: "Label_3"})
CREATE (e:Label_4 {name: "Label_4"})
CREATE (f:Label_5 {name: "Label_5"})
CREATE (a)-[:FOLLOWS]->(b)
CREATE (a)-[:FOLLOWS]->(c)
CREATE (b)-[:FOLLOWS]->(d)
CREATE (c)-[:FOLLOWS]->(e)
CREATE (d)-[:FOLLOWS]->(e)
CREATE (e)-[:FOLLOWS]->(f)

至于为什么筛选不起作用,WHERE子句中的模式并不特别适用于匹配的路径。如果整个图形中不存在这样的模式,则要求它过滤掉结果。因为在图形中出现了从:Label_1到:Label_5的模式,所以匹配总是失败的

您可以尝试收集要排除的路径并进行筛选,以便任何匹配的路径都不在排除集中:

MATCH path = (:Label_1)-->(:Label_2)-->(:Label_3)-->(:Label_4)-->(:Label_5)
WITH collect(path) as excluded
MATCH p=(e1n:Label_1)-[*]->(e2:Label_5)
WHERE NOT p IN excluded
RETURN p