在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