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
使用Cypher从Neo4j图形数据库中的一系列节点获取完整路径_Neo4j_Cypher - Fatal编程技术网

使用Cypher从Neo4j图形数据库中的一系列节点获取完整路径

使用Cypher从Neo4j图形数据库中的一系列节点获取完整路径,neo4j,cypher,Neo4j,Cypher,我正在存储一个节点序列,其中一个节点与序列中的前一个节点以及表示“对象”的另一个节点相关。例如,我可能有以下序列: (S1)<-[r]-(S2)<-[r]-(S3)<-[r]-(S4) 在此示例中,S1和S3都与O1相关 我想要实现的是将起点指定为“O1”,并能够获得上面示例中从S1到S4的完整路径 我能够通过在S1中添加一个名为“开始”的属性和在S4中添加另一个名为“结束”的属性来实现这一点,以表示序列的开始和结束,并使用此查询仅获取完整序列: MATCH (O:Obj{n

我正在存储一个节点序列,其中一个节点与序列中的前一个节点以及表示“对象”的另一个节点相关。例如,我可能有以下序列:

(S1)<-[r]-(S2)<-[r]-(S3)<-[r]-(S4)
在此示例中,S1和S3都与O1相关

我想要实现的是将起点指定为“O1”,并能够获得上面示例中从S1到S4的完整路径

我能够通过在S1中添加一个名为“开始”的属性和在S4中添加另一个名为“结束”的属性来实现这一点,以表示序列的开始和结束,并使用此查询仅获取完整序列:

MATCH (O:Obj{name:'O1'}), 
path=(O)<-[:OBJECT]-(first:SEQ)<-[:PREV*]-(last:SEQ) 
WHERE has(first.start) 
AND has(last.end) 
return path
MATCH(O:Obj{name:'O1'}),

路径=(O)是的,你可以。您只需要按大小按降序排列结果路径,并只返回最长的路径

match p=(:Obj {name:'O1'})<-[:REL]-(:SEQ)<-[:PREV*]-(:SEQ)
with p, size(nodes(p)) as seq_length
order by seq_length desc
limit 1
return tail(nodes(p))

match p=(:Obj{name:'O1'})可以。您只需要按大小按降序排列结果路径,并只返回最长的路径

match p=(:Obj {name:'O1'})<-[:REL]-(:SEQ)<-[:PREV*]-(:SEQ)
with p, size(nodes(p)) as seq_length
order by seq_length desc
limit 1
return tail(nodes(p))

match p=(:Obj{name:'O1'})您可以要求
last
位于“链的末端”:


MATCH path=(:Obj{name:'O1'})您可以要求
last
位于“链的末端”:


MATCH path=(:Obj{name:'O1'})这只在我有一个序列的情况下有效,但在我的图形中,我有很多序列,我希望能够根据某些条件获得所有序列。这只在我有一个序列的情况下有效,但在我的图中,我有许多序列,我希望能够根据某些条件得到所有序列。这就是我所需要的!当序列中的一个节点与第一个节点匹配时,我只需要做一个小的修改就可以过滤掉。因此,我的结论是:MATCH path=(O:Obj{name:'O1'})请记住最适合您的答案。这就是我需要的!当序列中的一个节点与第一个节点匹配时,我只需要做一个小的修改就可以过滤掉。因此,我的结论是:MATCH path=(O:Obj{name:'O1'})请记住最适合您的答案。
match p=(:Obj {name:'O1'})<-[:REL]-(:SEQ)<-[:PREV*]-(:SEQ)
with p, size(nodes(p)) as seq_length
order by seq_length desc
limit 1
return tail(nodes(p))
MATCH path=(:Obj {name:'O1'})<-[:OBJECT]-(:SEQ)<-[:PREV*]-(last:SEQ)
WHERE NOT (last)<-[:PREV]-(:SEQ)
RETURN path