在Neo4j的图表学院(http://neo4j.com/graphacademy/online-course/)我在读“(L2) - (聚合)”部分:Neo4j的查询优化
通常情况下你感兴趣的前N个结果,从该结果计数聚合。这是通过先计数并以DESCending方式对结果进行排序,然后将结果限制在最前面n来实现的。如果我们想要参与大多数电影中的前十名演员,则查询将如下所示。
MATCH (a:Person)-[:ACTED_IN]->(m)
RETURN a.name, count(m)
ORDER BY count(m) DESC
LIMIT 10;
不过,我想知道如果它足够聪明,不计算多次计数(M)存在,即如果类似如下的语法是更好:
MATCH (a:Person)-[:ACTED_IN]->(m)
RETURN a.name, count(m) AS c
ORDER BY c DESC
LIMIT 10;
谢谢,不知道PROFILE –
顺便说一句,在http://neo4j.com/docs/2.0/cypher-refcard/我看到他们使用“AS”模式进行类似的查询与“计数”,但也许他们这样做是为了保持清洁 –
就我而言,只要PROFILE是相同的,这是个人喜好的问题。使用'AS'子句很好重命名,因为默认情况下该列将被命名为'count(x)',这是一个糟糕的名字。所以我也喜欢'AS'的惯例。 – FrobberOfBits