Neo4j / Cypher - 查找仅链接到给定父节点的节点

时间:2014-08-14 16:01:43

标签: neo4j cypher

我试图提出一个密码查询,该查询可以返回某些父母的子节点,其中孩子的父母都是所希望的父母。

我在这个控制台上有一个示例数据集:http://console.neo4j.org/?id=nsq8c1

在示例中,我们有包含父节点的组节点,以及具有正好2个父节点的子节点,并且所有组中的所有父节点都具有与其他父节点相关的子节点。现在我想找回在group1中同时拥有父母的孩子。

我尝试的示例查询是match (group { name: "group1" })-[:contains]->(parent)-[:has_child]->(child) return child,它只返回所有子节点,而不仅仅是childofsamandjane。

鉴于group1,你如何得到childofsamandjane?

1 个答案:

答案 0 :(得分:4)

SBS,

以下是一种方法:

MATCH (group { name: "group1" })-[:contains]->(parent)-[:has_child]->(child)
WITH group, parent, child
MATCH (child)<-[:has_child]-(parent2)<-[:contains]-(group)
WHERE parent <> parent2
RETURN DISTINCT child

您将小组中的父母与其所有子女进行匹配,然后从每个小孩回到同一组中的其他父母。

恩典与和平,

吉姆