我是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
答案 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