Cypher查询返回匹配的节点和可选关系

时间:2016-05-28 15:52:48

标签: node.js neo4j cypher

我正在尝试找到返回所有匹配节点的最佳方式以及它们可能具有的任何关系?

这是我的问题:

我需要返回创建项目的所有用户,所以

match (u : User)-[r:CREATE]->(p: Project) return u, collect(p)

很简单,但是用户也可能有其他关系,我想包含它们或者可选择检查(返回true / false)

例如,用户可以建立关系RECOMMEND,我不想限制它,但是如果检查它是否存在与哪个节点有关?

理想情况下,我的返回表如下所示:

USER1 - PROJECT(S) - 推荐用户

USER2 - PROJECT(S) - NULL(无人推荐)

1 个答案:

答案 0 :(得分:2)

OPTIONAL MATCH将匹配模式,如果不存在则返回null

MATCH (u : User)-[r:CREATE]->(p: Project) 
OPTIONAL MATCH (u)-[:RECOMMEND]->(rec)
RETURN u, collect(p), collect(rec)