编写一个查询,返回neo4j中两个节点之间的补充关系

编写一个查询,返回neo4j中两个节点之间的补充关系,neo4j,cypher,Neo4j,Cypher,我有一个neo4j数据库,它有这个表格 (:FBuser)-[:Published]->(:Post)<-[:Tagged_in]-(:Friend)<-[:Tagged_together]->(:Friend) 我需要那个特定的(n:Friend)的所有帖子。问题是,并非所有的(:Post)都与另一个(m:Friend)连接,因此,只有一些节点是(n:Friend)(m:Friend) 我编写了这段代码,但显然只返回与它相关的特定节点(:Friend)和补充(:Fri

我有一个neo4j数据库,它有这个表格

(:FBuser)-[:Published]->(:Post)<-[:Tagged_in]-(:Friend)<-[:Tagged_together]->(:Friend)
我需要那个特定的
(n:Friend)
的所有帖子。问题是,并非所有的
(:Post)
都与另一个
(m:Friend)
连接,因此,只有一些节点是
(n:Friend)(m:Friend)

我编写了这段代码,但显然只返回与它相关的特定节点
(:Friend)
和补充
(:Friend)
的所有节点
(:Post)

MATCH t=(:fbUser)-[:FRIEND]-(w)-[:TAGGED_IN]-(p)
MATCH s=(:Friend)-[:TAGGED_IN]-(q)
WHERE  
     w.name=~ '(?i).*edoardo.*' AND
     q.timestamp=p.timestamp AND
     w.nodeDegree>=0 
RETURN t,s
如何解决此问题?

尝试可选匹配

我使用了一个coalesce语句,这样,如果q为null,时间戳过滤器仍将返回记录

MATCH t=(:fbUser)-[:FRIEND]-(w)-[:TAGGED_IN]-(p)
OPTIONAL MATCH s=(:Friend)-[:TAGGED_IN]-(q)
WHERE  
     w.name=~ '(?i).*edoardo.*' AND
     coalesce(q.timestamp, p.timestamp)=p.timestamp AND
     w.nodeDegree>=0 
RETURN t,s
MATCH t=(:fbUser)-[:FRIEND]-(w)-[:TAGGED_IN]-(p)
OPTIONAL MATCH s=(:Friend)-[:TAGGED_IN]-(q)
WHERE  
     w.name=~ '(?i).*edoardo.*' AND
     coalesce(q.timestamp, p.timestamp)=p.timestamp AND
     w.nodeDegree>=0 
RETURN t,s