簡體   English   中英

Cypher Neo4j ORDER BY DESC查詢

[英]Cypher Neo4j ORDER BY DESC query

我想按降序排列COUNT(Movie.title)。 但它給出了一個錯誤。 這是查詢。

MATCH (Movie {genre:"Action"})<-[:ACTS_IN]-(Person)
                 "RETURN Person.name, Movie.genre,  COUNT(Movie.title)"
                 "ORDER BY COUNT(Movie.title) DESC"
                 "LIMIT 100";

謝謝!

您可以使用此查詢:

MATCH (movie:Movie {genre:"Action"})<-[:ACTS_IN]-(person:Person)
RETURN person.name, movie.genre,  COUNT(distinct movie.title) AS cnt
ORDER BY cnt DESC
LIMIT 100

返回錯誤是因為您無法立即在Cypher中按聚合順序排序。 要按任何聚合訂購,您需要使用WITH運算符。

所以你的查詢應該是(假設你想列出每個類型的每個演員的標題):

MATCH (Movie {genre:"Action"})<-[:ACTS_IN]-(Person)
RETURN Person.name, Movie.genre,  COUNT(Movie.title)
WITH Person.name AS name, Movie.genre AS genre, COLLECT(Movie.title) AS titles
RETURN name, genre, titles
ORDER BY LENGTH(titles) DESC
LIMIT 100

限制100現在已經改變了它的行為,因此您可能希望將其移動到查詢中:

MATCH (Movie {genre:"Action"})<-[:ACTS_IN]-(Person)
RETURN Person.name, Movie.genre,  COUNT(Movie.title)
WITH Person, Movie
LIMIT 100
WITH Person.name AS name, Movie.genre AS genre, COLLECT(Movie.title) AS titles
RETURN name, genre, titles
ORDER BY LENGTH(titles) DESC

除此之外:為了使您的查詢運行良好,您應該在Movie.genre屬性上有一個索引,您應該為Movie和Person引入標簽。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM