从Neo4j中的所有节点获取关系

时间:2016-12-21 07:46:53

标签: neo4j match relationships

我正在尝试使用Neo4j进行查询。 我想在Neo4j中打开AUTO-COMPLETE时打印获取信息的结果。 例如,假设查询创建3个节点,如下所示。

create (david:Person {name: 'david'}), (mike:Person {name: 'mike'}), (book:Book {title:'book'}), (david)-[:KNOWS]->(mike), (david)-[:WRITE]->(book), (mike)-[:WRITE]->(book)

以下是2张图片:

  • 自动完成

  • 自动完成关闭

在查询之后显示图,我想基于起始节点('book'节点)获得所有相关节点的关系。 我使用了这个查询,如下所示。

match (book:Book)-[r]-(person) return book, r, person

无论AUTO-COMPLETE是ON还是OFF,我都希望得到所有节点的关系,包括“David知道迈克”,但系统说不然。

我在neo4j网站上研究了很多Syntax结构,不知怎的,这对我来说非常困难。所以,我上传这篇文章是为了获得帮助。

2 个答案:

答案 0 :(得分:0)

您必须明确地返回自己需要的所有数据。例如,Neo4j会自动返回具有数千个关系的超级节点的所有关系,这是不好的,因为它意味着大量的I / O,可能一无所获。

MATCH (book:Book)-[r]-(person)-[r2]-()
RETURN book, r, person, collect(r2) AS r2

答案 1 :(得分:0)

感谢InverseFalcon,这是我的查询。

MATCH p = (book:Book)-[r]-(person:Person) 
UNWIND nodes(p) as allnodes WITH COLLECT(ID(allnodes)) AS ALLID 
MATCH (a)-[r2]-(b) 
WHERE ID(a) IN ALLID AND ID(b) IN ALLID 
WITH DISTINCT r2 
RETURN startNode(r2), r2, endNode(r2)