Neo4j查询获得最高程度的前几个节点

时间:2015-01-23 16:13:34

标签: neo4j

我是Neo4j的初学者,需要帮助。是否有查询获得最高程度的前几个节点?

我有节点叫做#34; P"和节点叫" A"。只有" P"之间只有链接。和" A"节点。我想拥有前10个节点" P"其中包含节点的最多链接" A"。

我的想法是以下查询,但花了这么多时间!

比赛(P1:P) - [r] - >(A1:A) 返回P1.name AS P_name,COUNT(A1)AS A_no 订购没有DESC 限制10

我的查询有问题吗?

最佳,

MOWI

1 个答案:

答案 0 :(得分:3)

您的数据库中有多少个节点?

我可能不会使用cypher,Java API实际上有一个node.getDegree()方法,速度要快得多。

您的查询可以加快一点

MATCH (P1:P)-->() 
RETURN id(P1),count(*) as degree 
ORDER BY degree DESC LIMIT 10

您也可以尝试:

MATCH (P1:P)
RETURN id(P1),size((P1)-->()) as degree 
ORDER BY degree DESC LIMIT 10

用于限制节点:

MATCH (P1:P)
WHERE P1.foo = "bar"
WITH P1 limit 10000
MATCH (P1)-->() 
RETURN id(P1),count(*) as degree 
ORDER BY degree DESC LIMIT 10