使用Neo4j'返回我的朋友和朋友的朋友;塞弗

使用Neo4j'返回我的朋友和朋友的朋友;塞弗,neo4j,cypher,Neo4j,Cypher,我有具有bi关系的节点(如下所示) 我正在尝试创建一个查询,希望返回特定节点的所有后续节点和其后续节点的后续节点(3) 例如,假设这些关系: ->符号跟随 A->B B->A B->C C->B C->D D->C C->E E->C 如果我在节点A上执行查询,我希望得到这个响应 B C D E 我试过这个: MATCH (user:User {name:'roi'})-[:nearby*1..3]->(foaf) WHERE NOT((u

我有具有bi关系的节点(如下所示)

我正在尝试创建一个查询,希望返回特定节点的所有后续节点和其后续节点的后续节点(3)

例如,假设这些关系:

->符号跟随

A->B
B->A
B->C
C->B
C->D
D->C
C->E
E->C
如果我在节点A上执行查询,我希望得到这个响应

B C D E

我试过这个:

MATCH (user:User {name:'roi'})-[:nearby*1..3]->(foaf)
WHERE NOT((user)-[:nearby]->(foaf))
RETURN user, foaf
问题是,我没有得到节点(A)以下只有他的以下朋友的以下

所以我得到了

C D E

我没有得到B

有人能帮忙吗?
谢谢

您没有得到
B
,因为您的
WHERE
模式会过滤掉
[:附近]
A
的任何节点。对于这种特殊的关系,就像说

MATCH A-[:NEARBY]->B
WHERE NOT(A-[:NEARBY]->B)
编辑

如果你想让一个用户的朋友和朋友的朋友深入三层,而不是你能做的用户

MATCH (user:User {name:'roi'})-[:NEARBY*1..3]->f
WHERE f <> user
RETURN f
MATCH(用户:用户{name:'roi})-[:nearest*1..3]->f
其中f用户
返回f

我遇到错误:查询无法以MATCH(必须是RETURN或update子句)(第1行第1列(偏移量:0))“MATCH A-[:nearear]->B“^Yes,这是正确的。我没有给你一个不同的查询来运行,我只是想告诉你你的查询出了什么问题。你在
WHERE
子句中明确禁止你想要返回的东西,就像我在回答中所做的那样。啊,对了,明白了。因此,我如何才能获得所有朋友和朋友的朋友,直到深度3(不包括我自己)(没有启动节点)删除
WHERE
子句,或将其更改为
WHERE user foaf