Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neo4j cypher查询以获取与特定其他节点没有关系的所有节点_Neo4j_Cypher - Fatal编程技术网

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

Neo4j cypher查询以获取与特定其他节点没有关系的所有节点,neo4j,cypher,Neo4j,Cypher,我使用Neo4j 2.3.1,我正在寻找一个cypher查询,该查询提供数据库中所有未连接到特定其他节点的节点。 我的树看起来像这样: 我知道红色的那个,想询问一下绿色的那个。他们都有相同的关系 编辑:我的问题措辞有误导性,因此:我想要什么(如图所示)所有“在”特定节点及其子节点之上的节点。视情况而定。假设所有节点标签都相同,则应该可以: MATCH (a:circle)-[r]->(b:circle) WHERE a.colour <> 'Red' AND b

我使用Neo4j 2.3.1,我正在寻找一个cypher查询,该查询提供数据库中所有未连接到特定其他节点的节点。 我的树看起来像这样:

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


编辑:我的问题措辞有误导性,因此:我想要什么(如图所示)所有“在”特定节点及其子节点之上的节点。

视情况而定。假设所有节点标签都相同,则应该可以:

   MATCH (a:circle)-[r]->(b:circle)
    WHERE a.colour <> 'Red' AND b.colour <> 'Red'
    RETURN a,b
MATCH (red)<-[*]-(parent)-[*0..10]->(children)
WHERE red.id = xxx
RETURN parent, children
匹配(a:圆)-[r]->(b:圆)
其中a.颜色为“红色”,b.颜色为“红色”
返回a,b
这应该可以:

   MATCH (a:circle)-[r]->(b:circle)
    WHERE a.colour <> 'Red' AND b.colour <> 'Red'
    RETURN a,b
MATCH (red)<-[*]-(parent)-[*0..10]->(children)
WHERE red.id = xxx
RETURN parent, children
匹配(红色)(儿童)
其中red.id=xxx
返回父母、子女

查找红色节点的所有父节点和父节点的所有子节点。

通常,图形数据库可以有多个不相交的子图(甚至不必是树)。例如,假设有其他节点未以任何方式连接到子图

这里有一种方法可以通过forward
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
的“树”的大小以及数据库中有多少节点。你应该忽略那些不能帮助你过滤掉任何东西的节点标签。

颜色只是为了可视化-我不知道颜色;-)我只知道“红色”节点的ID,希望所有节点都不是该节点的子节点。是什么使每个节点不同?是每个节点上的标签或属性使其具有不同的颜色吗?答案取决于数据的实际内容。忘记颜色-所有节点都有相同的标签,并且连接的关系类型相同。正如我所说的,我只需要一个节点的ID,并希望树中的所有节点都“位于”这个节点之上。我搜索这样的东西:
match(n)通常,一个图DB可以有多个不相交的子图(甚至不必是树)。例如,假设这里有其他节点没有以任何方式连接到树。是否还需要不相交子图中的节点及其关系?红色节点上方的绿色节点连接到红色节点。。。所以你的陈述本身是不一致的:)@MichaelHunger-是的,你是对的,我的描述和图片没有显示相同的东西-我会改变,因为cypher不会穿越一段关系两次,这应该是最有效的。谢谢,这对我帮助很大,而且非常快。谢谢你的回答。返回没有任何关系的节点也是个好主意。查询运行良好,并返回正确的结果,但是,正如您所说,查询速度非常慢,对于17000个节点,它需要几分钟的时间。。