我在Neo4j(第一次使用它)中有大约10个不同节点的图表,这些节点以各种方式连接。并非所有节点都相互连接,因为有些节点最多有6个或7个邻居,而有些节点只有1.我会编写/使用什么查询来检查从NodeA到NodeB的路径是否存在?它不必是最短的路径,只要路径存在即可。
除此之外,有没有办法计算谁拥有最多或最少的邻居?感谢大家提前帮助。
答案 0 :(得分:1)
如果节点之间至少有一条路径,则返回Foo
个节点a
和b
。 (如果有很多路径或很长的路径,这种长度无限长的路径查询可能需要很长时间或耗尽内存。)
MATCH (a:Foo {id: 'a'}), (b:Foo {id: 'b'})
WHERE (a)-[*]-(b)
RETURN a, b;
返回a
和b
之间的所有路径。 (此查询可能需要比上一个查询更多的时间和内存,因为它将尝试返回所有匹配的路径。)
MATCH path=(a:Foo {id: 'a'})-[*]-(b:Foo {id: 'b'})
RETURN path;
按降序返回具有最多邻居的10个节点:
MATCH (n)--()
WITH n, COUNT(*) AS c
RETURN n
ORDER BY c DESC
LIMIT 10;