Więc zajrzałem do neo4j i mogę go używać w nadchodzącym projekcie, ponieważ jego model danych może bardzo dobrze pasować do mojego projektu. Przejrzałem dokumentację, ale nadal potrzebuję odpowiedzi na to pytanie:neo4j: relacje jednokierunkowe/dwukierunkowe?
Czy mogę ustawić relacje na jednokierunkowe?
Wygląda na to, że ludzie z neo4j lubią filmy, więc kontynuujmy to. Jeżeli muszę wykres tak:
Actor A -> [:Acts in] -> Movie B
czym kierunek jest oczywista, ponieważ węzły są różne typy.
Ale lubię horrory więc ...
Person A -> [:wants_to_kill] -> Person B
muszę ten związek będzie jednokierunkowy więc jeśli zapytanie „Kto ma Osoba A chce zabić?” Dostaję osobę B, jeśli zapytam "Kto chce, aby osoba B chce zabić?" Nic nie dostaję.
Czasami nadal muszę relacje być dwukierunkowe
odczuwalna:
Person A <-[:has_met] -> Person B
... co jest oczywiste.
dokumentacja mówi:
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.
Więc docs powiedzieć, relacje domyślnie mają kierunek i mogę ignorować faktu, że jeśli chcę.
Teraz to jest, gdy sprawy się komplikują:
Rozważmy następujący wykres (i zwróć uwagę na strzałki)
Person A <- [:wants_to_kill] -> Person B
Person B -> [:wants_to_kill] -> Person C
Person C -> [:wants_to_kill] -> Person A
Gdybym ignoruje wskazówki dla wszystkich [:wants_to_kill]
dostaję fałszywe wyniki dla „Kto robi Osoba A/C chce zabić? " Gdybym wiedział, które z nich musiałem zignorować, nie zadałbym pytania.
Czy mogę w jakiś sposób ustawić relacje na dwukierunkowe (podczas ich tworzenia), czy też powinienem modelować to z dwiema relacjami (między osobą A & B)?
miejsce na, dzięki! – joschua011
Nawet po dwóch latach nadal jest to niezwykle cenne. Nie można znaleźć tej odpowiedzi w dokumentach. Mogło tam być bardzo dobrze, ale być może sposób, w jaki je sformułowali, utrudniał znalezienie. –