2015-09-10 135 views
2

我有双向关系的节点(遵循)返回使用我的朋友和朋友的朋友的Neo4j的Cypher

我想创建,我想返回特定节点的所有以下节点的查询及以下节点他以下节点(3所希望深度)

例如都假定这些关系:

- >符号遵循

A->B 
B->A 
B->C 
C->B 
C->D 
D->C 
C->E 
E->C 

我期待着得到该R esponse如果我执行的节点A

乙 Ç d Ë

我尝试这样的查询:

MATCH (user:User {name:'roi'})-[:nearby*1..3]->(foaf) 
WHERE NOT((user)-[:nearby]->(foaf)) 
RETURN user, foaf 

的问题是,我不明白的节点(A)以下仅他的朋友们以下

如下所以我就

ç d è

我没有得到

有人可以帮助? 感谢

回答

2

你没有得到B因为你WHERE模式筛选出是[:NEARBY]A任何节点。对于特定的关系就等于是说

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

编辑

如果你想要一个用户的朋友和朋友的朋友的深度3条,但不是用户,你可以做

MATCH (user:User {name:'roi'})-[:NEARBY*1..3]->f 
WHERE f <> user 
RETURN f 
+0

我有错误:查询不能以MATCH结尾(必须是RETURN或更新子句)(第1行,第1列(偏移量:0)) “MATCH A - [:NEARBY] - > B” ^ – rayman

+0

是的, 。我没有给你一个不同的查询来运行,我试图告诉你你的查询有什么问题。你明确禁止你想在'WHERE'子句中返回的东西,就像我在回答中一样。 – jjaderberg

+0

啊对了。所以我怎样才能让所有的朋友和朋友的朋友,直到3深度排除我自己(没有起始节点) – rayman

相关问题