Neo4j 查询以获取具有最高学位的前几个节点



我是Neo4j的初学者,需要帮助。是否有用于获取最高学位的前几个节点的查询?

我有名为 P 的节点和名为 A 的节点。P 节点和A节点之间只有链接。我想拥有前 10 个节点P这些节点与节点的链接最多A

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

MATCH (P1:P)-[r]->(A1:A)
RETURN P1.name AS P_name, COUNT(A1) AS A_no
ORDER BY no DESC
LIMIT 10

我的查询有问题吗?

最好

莫维

数据库中有多少个节点?

我可能不会为此使用密码,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

最新更新