を行う方法は、これは私がしたいことはあるので、基本的に私のデータモデルのNeo4j - ポスト処理UNION(ページネーション)私は私のNeo4j DBからデータをロードするCYPHERクエリを書いている
ですそのプロパティと、それに関連するすべてのもののすべてで雑誌を返すために、クエリ、アイブ氏は、単純なクエリを実行しようとしたが、それがすべてではパフォーマンスではなく、DBがホストされている私のEC2インスタンスがメモリ不足に迅速 MATCH p=(j:Journal)-[*0..]-(n) RETURN p
私はUNIONS
を使用してクエリを書き込むことができました`MATCH p=(j:Journal)<-[:BELONGS_TO]-(at:ArticleType) RETURN p
UNION
MATCH p=(j:Journal)<-[:OWNS]-(jo:JournalOwner) RETURN p
UNION
MATCH p=(j:Journal)<-[:BELONGS_TO]-(s:Section) RETURN p
UNION
MATCH p=(j:Journal)-[:ACCEPTS]->(fc:FileCategory) RETURN p
UNION
MATCH p=(j:Journal)-[:CHARGED_BY]->(a:APC) RETURN p
UNION
MATCH p=(j:Journal)-[:ACCEPTS]->(sft:SupportedFileType) RETURN p
UNION
MATCH p=(j:Journal)<-[:BELONGS_TO|:CHILD_OF*..]-(c:Classification) RETURN p
SKIP 0 LIMIT 100`
クエリが正常に動作し、その性能は全く悪いことではありません、私は見つけることだ唯一の問題は、私の周りグーグルでてきたと私はきた、限界であり、 UNIONSを使用した後処理問合せはまだサポートされていないことが分かりました。
参照githubの問題がまだ解決されていないので、UNIONの処理を投稿まだ不可能である
私はこの問題に出くわしたときに私が試した論理的に最初にすることは、個々のクエリに改ページを入れていましたしかし、これは自分自身にはあまり意味がない奇妙な行動をしていました。
だから私はユニオンを使用せずにクエリを記述してみました、私はこのクエリは、しかし、私のDBを壊すこの
`MATCH (j:Journal)
WITH j LIMIT 10
MATCH pa=(j)<-[:BELONGS_TO]-(a:ArticleType)
MATCH po=(j)<-[:OWNS]-(o:JournalOwner)
MATCH ps=(j)<-[:BELONGS_TO]-(s:Section)
MATCH pf=(j)-[:ACCEPTS]->(f:FileCategory)
MATCH pc=(j)-[:CHARGED_BY]->(apc:APC)
MATCH pt=(j)-[:ACCEPTS]->(sft:SupportedFileType)
MATCH pl=(j)<-[:BELONGS_TO|:CHILD_OF*..]-(c:Classification)
RETURN pa, po, ps, pf, pc, pt, pl`
を思い付いた私はCQLのクエリを記述するために不可欠な何かが欠けているように、私は感じて...
私もこのneo blog postでCOLLECTとUNWINDを調べましたが、実際にそれを理解できませんでした。
ユニオンを削除せずにクエリにページを設定するにはどうすればよいですか?または、ジャーナル・レベルでページネーションを適用でき、パフォーマンスに影響を与えないように、他のクエリ作成方法がありますか?
--- EDIT ---ここ
は私の2番目のクエリ
ていますか?もしそうなら、この回答は役に立ちます:http://stackoverflow.com/questions/41448935/order-by-the-result-of-union-of-subqueries –
@GaborSzarnyas私はAPOCから離れようとしていました。プレーンなCypher言語を使ってそれを達成してください。しかし、私の周りの唯一の仕事がそれを使うことを検討していれば。 – Juanpe
@ gaborSzarnyas私はAPOCをインストールしていますが、私はクエリを使って遊んでいます。あなたが提供した質問に対する答えに従ってきましたが、最初のクエリと同じ動作をします。ジャーナルノード..どのようにパスの代わりにジャーナルノードに制限を適用できますか? – Juanpe