2017-06-13 15 views
0

私は監督の映画を監督している。映画にはジャンルがあります。私は最初の5つの映画を監督のために、リリース日ごとに、最初の2つのジャンルを名前でソートして映画ごとに分けたい。制限の結果をNeo4j

MATCH(d {name: "Steven Spielberg"}) -- (f:Film) 
WITH f 
ORDER BY f.release_date DESC LIMIT 5 
MATCH (f) -- (g:Genre) 
RETURN f,g 

これは、私にrelease_dateでソートされたスティーブンスピルバーグの最初の5つの映画を私に与えます。それぞれの映画について、最初に2つのジャンルを名前でソートするにはどうすればよいですか?

+0

クエリの 'MATCH(f) - (g)'部分は、 'g'を単なるジャンルではなく任意のノードにマッチさせます(特に、結果の少なくとも1行で' g'は**スティーブンスピルバーグ**代表)。 – Leon

+0

[cypherのサブクエリを制限する方法](https://stackoverflow.com/questions/29023703/how-to-limit-a-subquery-in-cypher)の可能な複製 – Leon

答えて

0

あなたの質問はHow to limit a subquery in cypher?と重複しているようです。

しかし、ここで受け入れられている自己応答は、望ましい結果の近似に過ぎません。

MATCH(d {name: "Steven Spielberg"}) -- (f:Film) 
WITH f 
MATCH (f) -- (g:Genre) 
WITH f,g ORDER BY g.name 
RETURN f,collect(g)[0..2] ORDER BY f.release_date DESC LIMIT 3 
1

ここであなたを助けるlimiting match results per row上のナレッジベースの記事があります:あなたのケースでは、以下のようなものでなければなりません。

要するに、これにAPOCプロシージャを使用するか、結果をCOLLECT()してコレクションの興味あるスライスを取る必要があります。