2016-04-05 9 views
2

Wir haben ein Diagramm, in dem ein Benutzer mit einigen Subjektknoten seines Interesses verwandt ist und diese Subjekte mit einigen Fragen durch eine Beziehung verbunden sind. Es ist einfach, alle Fragen des interessierten Subjekts des Benutzers durch die folgende Frage zu bekommen.Neo4j Cypher-Abfrage, um an mehreren Relationen zu arbeiten

match(u:user{name:'vartika'})<-[:userinteresttag]-(tag)-[:tagofquestion]->(q:question) return q.title 
        (user) 
       /  \ 
       /  \ 
      (subject1) (subject2) (subject3) 
      /\   /
      / \   / 
     (ques1) (ques2) (ques3) (ques4)(ques5) 

Aber jetzt ist das Problem, wie man die Frage von anderen als interessierten Themen des bestimmten Benutzers bekommt. Wie man die Frage formt, um Frage von Nicht-Interessekursen zu bekommen. (Benutzer und Frage Knoten nicht direkt verbunden sind, wie in der Grafik zu sehen)

* I für immer ques4 und ques5 abfragen möchten, die nicht von userinteressubject sind als subject3 nicht * ist userinterestsubject

Antwort

0

Eine der Lösungen besteht darin, Ihre Datenbankarchitektur zu modifizieren und immer dann, wenn der Benutzer eine Frage stellt, um sie direkt an den Benutzer anzuhängen, und wann immer Sie auch eine Frage an das Tag anhängen müssen. So werden Sie so etwas wie

match(u:user{name:'vartika'})-[:asked]->(q:question) return q.title 

haben andere Lösung ist so etwas wie

match(u:user{name:'vartika'})-[rel*1..3]->(q:question) return q.title 

aber es hängt von Ihrem das lengh von Pfad zwischen Benutzer zu kennen und zu hinterfragen

Editiert: Versuchen Sie, diese

match(u:user{name:'vartika'}) with u Match (q:question) where not (u)<-[:userinteresttag]-()-[:tagofquestion]->(q) return q 

Sie werden alle bekommen Frage, die nicht mit dem Benutzer durch Tag verbunden

+0

aber Sir ist nicht verwandt, dass der Benutzer die Frage gestellt haben oder nicht. Es ist so, als ob ich dem Benutzer ein paar zusätzliche Fragen zeigen möchte, die nicht seine verwandten Themen sind. Hoffe, du hast mich jetzt –

+0

und die oben angegebene Grafik kann meine Frage klar machen. Ich habe es auch in Frage gestellt. thanku –

+0

warum so habe ich dich nicht.sorry Herr. Könnten Sie bitte genauer erklären –

Verwandte Themen