首页 > 解决方案 > 如何在 neo4j 中以可选的方式显示关系?

问题描述

我在 neo4j 中有多个节点和关系,某些节点的关系深度为 4,而某些节点的关系深度为 2。我正在使用 neo4j 的 HTTP API 以图形格式获取数据

示例查询:

MATCH p= (n:datasource{resource_key:'ABCD'})-[:is_dataset_of]-(c:dataset)-[q]-(v:dataset_columns)-[s]-(b:component)-[w]-(e:dashboard) return p

如果我使用这个查询,那么如果存在这种确切的关系,我可以获得输出,但如果第二个关系不可用,我也想获得输出,关于如何实现这一点的任何指针?

标签: neo4jcypher

解决方案


这是一种方法:

MATCH p = (:person1 {hobby: 'gamer'})-[:knows]-(:person2)
RETURN p
UNION ALL
MATCH p = (:person1 {hobby: 'gamer'})-[:knows]-(:person2)--(:person3)
RETURN p

UNION子句结合了 2 个查询的结果。并且该ALL选项告诉UNION不要打扰删除重复的结果(因为 2 个子查询永远不会产生相同的路径)。


推荐阅读