我使用Neo4j 2.3.1并且正在寻找一个密码查询,该查询为我提供了数据库中未连接到特定其他节点的所有节点。 我的树看起来像这样:
我知道红色的那个,想要一个给我绿色的查询。他们都有相同的关系。
编辑:我的问题是误导性的,所以:我想要的(如图中所示)所有节点都在特定节点“上方”以及他们的孩子。
答案 0 :(得分:2)
这应该有效:
MATCH (red)<-[*]-(parent)-[*0..10]->(children)
WHERE red.id = xxx
RETURN parent, children
找到红色节点的所有父母以及父母的所有孩子。
答案 1 :(得分:1)
通常,图表DB可以有多个不相交的子图(甚至不必是树)。例如,假设有其他节点未以任何方式连接到子图。
以下是一种可以通过前向REL
关系获取未连接到指定节点的所有节点的方法。我假设有趣的节点都有相同的标签(Foo
),并且还有其他没有该标签的节点。
MATCH (n:Foo { id: 123 })-[:REL*]->(m:Foo)
WITH (COLLECT(DISTINCT m) + n) AS not_wanted
MATCH (x:Foo)
WHERE NOT x IN not_wanted
RETURN x;
注意:此查询可能需要很长时间(或耗尽内存),具体取决于&#34;树&#34;以n
为根,是数据库中有多少个节点。您应该省略不能帮助您过滤掉任何内容的节点标签。
答案 2 :(得分:0)
取决于。假设您的所有节点标签都相同,这应该有效:
MATCH (a:circle)-[r]->(b:circle)
WHERE a.colour <> 'Red' AND b.colour <> 'Red'
RETURN a,b