繁体   English   中英

Neo4j cypher查询以获取与特定其他节点无关的所有节点

[英]Neo4j cypher query to get all nodes without a relationship to specific other node

我使用Neo4j 2.3.1,我正在寻找一个密码查询,它给了我数据库中没有连接到特定其他节点的所有节点。 我的树看起来像这样:

在此输入图像描述

我知道红色的那个,想要一个给我绿色的查询。 他们都有相同的关系。

编辑:我的问题是误导措辞,所以:我想要的(如图所示)所有节点都在特定节点“上方”以及他们的孩子。

这应该工作:

MATCH (red)<-[*]-(parent)-[*0..10]->(children)
WHERE red.id = xxx
RETURN parent, children

找到红色节点的所有父母和父母的所有孩子。

通常,图形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;

注意:此查询可能需要很长时间(或耗尽内存),具体取决于以n为根的“树”以及数据库中有多少个节点。 您应该省略不帮助您过滤掉任何内容的节点标签。

要看。 假设所有节点标签都相同,这应该有效:

   MATCH (a:circle)-[r]->(b:circle)
    WHERE a.colour <> 'Red' AND b.colour <> 'Red'
    RETURN a,b

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM