Also habe ich neo4j angeschaut, und ich könnte es in einem kommenden Projekt verwenden, da sein Datenmodell sehr gut zu meinem Projekt passt. Ich schaute durch die Dokumente, aber ich brauche immer noch eine Antwort auf diese Frage:neo4j: eindirektionale/bidirektionale Beziehungen?
Kann ich Beziehungen zu einseitig gerichtet sein?
Es scheint, dass die Neo4j Leute mögen Filme, also lass uns damit fortfahren. Wenn ich ein Diagramm wie folgt habe:
dann ist die Richtung offensichtlich, weil die Knoten verschiedene Typen sind.
Aber Ich mag Horrorfilme so ...
Person A -> [:wants_to_kill] -> Person B
Ich brauche diese Beziehung in eine Richtung zu sein, so dass, wenn ich frage: „Wer hat Person A töten will?“ Ich bekomme Person B, wenn ich frage "Wer will Person B töten?" Ich bekomme nichts.
Manchmal brauche ich Beziehungen noch zwei Richtungs
Wie zu sein:
Person A <-[:has_met] -> Person B
... was offensichtlich ist.
Dokumentation sagt:
Relationships are equally well traversed in either direction. This means that there is
no need to add duplicate relationships in the opposite direction (with regard to
traversal or performance).
While relationships always have a direction, you can ignore the direction where it is
not useful in your application.
So docs sagen, Beziehungen standardmäßig eine Richtung haben, und ich kann das ignorieren, wenn ich will.
Nun ist dies, wo die Dinge kompliziert werden:
Betrachten Sie die folgende Grafik (und beachten Sie die Pfeile)
Person A <- [:wants_to_kill] -> Person B
Person B -> [:wants_to_kill] -> Person C
Person C -> [:wants_to_kill] -> Person A
Wenn ich die Wegbeschreibung ignorieren für alle [:wants_to_kill]
ich falsche Ergebnisse für „Wer bekommen hat Person A/C will töten? " Wenn ich wüsste, welche ich ignorieren musste, würde ich die Abfrage nicht machen.
Also kann ich Beziehungen irgendwie bidirektional einstellen (wenn ich sie erstelle), oder sollte ich das mit zwei Beziehungen modellieren (zwischen Person A & B)?
spot auf, danke! – joschua011
Auch nach zwei Jahren ist das immer noch sehr wertvoll. Diese Antwort wurde in den Dokumenten nicht gefunden. Es könnte sehr gut drin sein, aber vielleicht machte es die Art, wie sie es formulierten, schwierig es zu finden. –