获取未连接到Neo4j中特定节点的节点

获取未连接到Neo4j中特定节点的节点,neo4j,cypher,Neo4j,Cypher,我想得到所有未连接到给定节点集的节点。假设我有5个节点A、B、C、D、E。现在A->B->C通过:Is_Friend关系连接。现在我想要所有未连接到A(即D和e)的节点 我尝试了这个查询,但不起作用 MATCH (a:Friend{name:"A"})-[:Is_Friend_Of*]->(b:Friend) MATCH (c:Friend) WHERE NOT (c)-[:Is_Friend_Of]->(b) RETURN c 这个查询应该做您希望它做的事情,但是,我要提醒您

我想得到所有未连接到给定节点集的节点。假设我有5个节点A、B、C、D、E。现在A->B->C通过
:Is_Friend
关系连接。现在我想要所有未连接到A(即D和e)的节点

我尝试了这个查询,但不起作用

MATCH (a:Friend{name:"A"})-[:Is_Friend_Of*]->(b:Friend) 
MATCH (c:Friend) 
WHERE NOT (c)-[:Is_Friend_Of]->(b)
RETURN c

这个查询应该做您希望它做的事情,但是,我要提醒您,根据数据库中不匹配的朋友数量的大小,您可能会得到很多匹配项

// match the single longest chain of friends in a :Is_Friend_Of relationship
// starting with 'A' that is possible
MATCH path=(a:Friend {name:"A"})-[:Is_Friend_Of*]->(b:Friend)
WHERE NOT (b)-[:Is_Friend_Of*]->()
WITH path

// then find the other friends that aren't in that path
MATCH (c:Friend) 
WHERE NOT c IN nodes(path)
RETURN c