2016-07-12 48 views
0

我需要从neo4j读取前端可视化的一些数据。我需要一次读取10个节点,以及它们之间的所有关系。我尝试了一些查询,但都没有成功。Neo4j,如何分页节点与所有关系

match (p:Page{domain:"www.google.com"})-[r:LinkTo]-(:Page) 
with p,r skip 10 limit 10 
return collect(distinct p) as pages, collect(distinct r) as links; 

这一个会给我10个节点和10个关系,但是这些节点之间的关系数目超过10个。 任何帮助,将不胜感激。

回答

1
// 1) Collect pages: 
match (P1:Page{domain:"www.google.com"})-[:LinkTo]-(P2:Page) 
with P1, P2 limit 10 
with collect(distinct P1) + collect(distinct P2) as tmp 
unwind tmp as p 
with collect(distinct p) as pages 

// 2) Then get a Cartesian product:  
unwind pages as P1 
    unwind pages as P2 
    optional match (P1)-[r:LinkTo]-(P2) 
RETURN pages, collect(distinct r) as links 

如果你需要精确最大10个节点:

// 1) Collect pages: 
MATCH (P1:Page{domain:"www.google.com"})-[:LinkTo]-(P2:Page) 
WITH P1, P2 LIMIT 10 
WITH collect(distinct P1) + collect(distinct P2) as CP 
UNWIND CP as P 
WITH distinct P LIMIT 10 
WITH collect(P) as pages 

// 2) Then get a Cartesian product:  
unwind pages as P1 
    unwind pages as P2 
    optional match (P1)-[r:LinkTo]-(P2) 
RETURN pages, collect(distinct r) as links 
+0

谢谢!这真的很有帮助!它给了我所有的关系。但它仍然可以得到改进,查询并不真正给出我在收集不同节点后确切的10个节点。 – ShaneX

+0

@ShaneX添加了一个如何精确获取10个节点的示例。 –

+0

再次感谢~~:D @stdob – ShaneX

相关问题