2017-02-27 13 views
1

変数パスの長さのネストされた戻り値:特定の質問テキストが(b|d).textと可能に含まれているサイファークエリ言語/のNeo4j - 私は次のような関係を持っているアンケートのためのNeo4jのグラフ構造を持つ

(a:Category)-[:INITIAL_QUESTION]->(b:Question)-[c:Answer*]->(d:Question) 

各質問の回答は関係に含まれていますc.response 最初の質問から、他のものより長いいくつかのパスがあります。私はこのようなものを見ていきます。

{"category": "example questionnaire category", 
"initialQuestion" : { 
        "id": 1, 
        "text": "Example text here", 
        "possibleAns": { 
         "yes" : { 
           "id": 2, 
           "text": "Second question text here?", 
           "possibleAns": { 
                "ans1": {/*Question 4 containing all possible child question nodes nested 
                   in possibleAns*/}, 
                "ans2": {/*Question 5 containing all possible child question nodes nested 
                   in possibleAns*/}, 
           } 
         }, 
         "no" :{ 
           "id": 3, 
           "text": "Different question text here?", 
           "possibleAns": { 
                "ans1": {/*Question 6 containing all possible child question nodes nested 
                   in possibleAns*/}, 
                "ans2": {/*Question 7 containing all possible child question nodes nested 
                   in possibleAns*/}, 
           } 
         } 
        } 
} 
} 

このようにカテゴリ全体のアンケートは1つのネストされたマップに含まれています。私は他のいくつかの例を見てきましたが、アンケートのブランチの多様な深さを考慮して、私のニーズに合わせてこれらのクエリを微調整することはできませんでした。

これを可能にするCypherクエリはありますか?そうでない場合は、アンケート全体をdbから取り出すための最良の方法は何でしょうか?

答えて

1

私はそう

これは、標準ツール(CYPHERなど)で行われていないことを考える、またはプログラムでJSON-ツリーのサイファークエリから結果を変換します。

または、3.0あなたのNeo4j - サーバーのバージョン以下でない場合、あなたはapoc.convert.toTreeを試すことができます。

MATCH path = (a:Category) 
      -[:INITIAL_QUESTION]->(b:Question)-[c:Answer*]-> 
      (d:Question) 
WITH collect(path) as paths 
CALL apoc.convert.toTree(paths) yield value as tree 
RETURN tree 
+0

はあなたに感謝!これはまさに私が探していたものです – aq13

関連する問題