私のスキーマと同じように、私は "プロジェクト"ノードと複数の "リビジョン"ノードをプロジェクトに接続しています。他のすべてのノードは、該当する「リビジョン」ノードに接続されます。私は、特定の "リビジョン"ノードに接続されているすべてのノードを取得する必要があります。ノードをフェッチする際には、これらのノード間の関係も取得する必要があります。特定のリビジョンに接続されているノードを制限する必要があります。Neo4j:パス内のノード間のリレーションシップ
私は以下のクエリを試しましたが、プロファイリング中にDBヒットが多くなるため、パフォーマンスが低下します。すべてのリビジョンに約28kのノードと76kの関係があります。
以下のクエリは費用効果が高い。ブラウザ内のデータベースにクエリを実行している間に期待通りの結果が得られます。しかし、私のJavaアプリケーションから実行している間に、特定のノードに接続されているノード間の関係「 」はフェッチされません。
PROFILE
MATCH (project:Project {name> :"test_local"})-[:HAS_REVISION]-
(revision:Revision{revisionNo:1})
WITH project,revision
MATCH p = (revision)-[]-(allRelatedNodes)
WITH project,revision,collect(p) as rs
RETURN project,revision,rs
誰でも助けてください。
Javaコードを共有してください。 –
最初のサイファークエリは、 'with'節に欠けているものがあるため、必要以上に多くの作業をしているようです。もう1つは正常に動作します。 Javaのスニペットと何を得るべきかについてのより具体的な記述を投稿してください。あなたは、特定の "Revision"に接続されたノード間の関係を望んでいるとしますが、クエリの出力でパスを収集しています。したがって、これらの関係のパスをどのように処理しているかに問題が生じる可能性があります。 – FrobberOfBits