Get full graph that node N is a part of in neo4j

雨燕双飞 提交于 2019-12-11 09:12:15

问题


I'm trying use Cypher to get the entire graph that exists if I start at a given node in neo4j. When I say entire graph I mean all nodes and relationships that are connected to at least one other node in the graph.

I've seen examples where people can get all nodes that might be connected to a given start node with a known relationship. Examples of this include this and this, but how could I do this if I do not know the relationships?

Ultimately I'd like every node and relationship where I start at one given node and sprawl out, listing the nodes that are linked by every relationship.

I've tried this:

START n=node(441007) MATHC (n)-[:*]->(d) RETURN d

but the syntax is incorrect. I'm unsure if you can submit a wildcard relationship. Additionaly I do not think this will give me what I am looking for.


回答1:


Try this:

MATCH (n)-[r*]->(d)
WHERE ID(n) = 441007
RETURN r, d

This will fan out from n (if using an older version of Neo, you should revert to your START syntax) and return you the paths to each d Node that can be reached. It is relationship type agnostic through not defining the relationship label. If you didn't care about the path you could omit itwith:

MATCH (n)-[*]->(d)
WHERE ID(n) = 441007
RETURN d

Obviously on a large graph this will get expensive!

Edit
Meant to add the link to the cheat sheet, check out the section called Patterns.




回答2:


Hej WildBill,

i have created a Company Graph for learning Neo4J, so i send the following Pattern against the Graph a got this result:

START a=node(9) 
MATCH (a)<-[rel]-(d) 
MATCH (d)-[sk]->(skill) 
RETURN a, d, skill

Node 9 is my Company, which is part of the Graph.



来源:https://stackoverflow.com/questions/25707304/get-full-graph-that-node-n-is-a-part-of-in-neo4j

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!