2016-04-12 6 views
1

私はそうのようなクエリがある:SKIPとLIMITはORDER句に基づいていますか?

MATCH 
    (card:`card`), 
    (event:`event`), 
    (card)<-[:includes_card]-(event) 
WHERE 
    card.id = "0000000978LBtZz08W5439Mvo" 
OPTIONAL MATCH 
    (actor:`user`), 
    (card)-[includes_actor_rel:includes_actor]->(actor) 
RETURN event, actor, includes_actor_rel 
ORDER BY event.created_at DESC 
SKIP 50 
LIMIT 5 

SKIPLIMIT句が返されたイベントノードの数を介して動作しますか?私は俳優と関係を返そうと思っていますが、俳優と関係ノードがページネーションに影響を与えることは望ましくないので、私は尋ねています。

これが当てはまらない場合は、個別のeventノードに正しくページするにはどうすればよいですか?

ありがとうございます!

答えて

0

私は、このような方法で、このクエリを書かれているでしょう:

MATCH 
    (card:card {id: "0000000978LBtZz08W5439Mvo"}) 
WITH 
    card 
MATCH 
    (event)-[:includes_card]->(card:card) 
WITH 
    card, event ORDER BY event.created_at DESC SKIP 50 LIMIT 5 
MATCH 
    (card)-[includes_actor_rel:includes_actor]->(actor:user) 
RETURN 
    event, actor, includes_actor_rel 
+0

ありがとうございます!追加データを追加する前に改ページを適用していることがわかりましたか?そうであれば、カードを返すでしょうか、イベントを返すのではなく、イベントがページネーションに影響しますか?また、最初のWITHカードの目的は何ですか? –

+0

これはもっとも簡単な解決策でした。私自身の質問に答えるために...唯一必要なWITH句が最後のものです。また、LIMIT句とSKIP句は行で操作されるため、ページネーションには影響しません。 –

1

あなたのクエリが(同じevent値を共有することができ、その一部)各includes_actor_rel関係の行を返し、それが本当に何でありますSKIPおよびLIMITが適用されます。

MATCH 
    (card:card)<-[:includes_card]-(event:event) 
WHERE 
    card.id = "0000000978LBtZz08W5439Mvo" 
OPTIONAL MATCH 
    (card)-[includes_actor_rel:includes_actor]->(actor:user) 
RETURN event, COLLECT({actor: actor, rel: includes_actor_rel}) AS data 
ORDER BY event.created_at DESC 
SKIP 50 
LIMIT 5; 

このクエリのCOLLECT()aggregation機能は、すべての俳優/ RELペアのコレクションを作成するには、グループ化キーとしてeventを使用しています:

は、あなたがこのような何かを行うことができ、 eventSKIPLIMIT条項を適用するには同じ eventの場合これにより、 eventごとに1つの結果行が生成され、 SKIPおよび LIMIT句が eventに適用されます。

関連する問題