Neo4j - polecenie scalania

Polecenie MERGE jest połączeniem polecenia UTWÓRZ i PODAJ.

Polecenie Neo4j CQL MERGE wyszukuje podany wzorzec na wykresie. Jeśli istnieje, zwraca wyniki.

Jeśli NIE istnieje na wykresie, tworzy nowy węzeł / relację i zwraca wyniki.

W tym rozdziale dowiesz się, jak -

  • Scal węzeł z etykietą
  • Scal węzeł z właściwościami
  • OnCreate i OnMatch
  • Połącz związek

Składnia

Poniżej znajduje się składnia polecenia MERGE.

MERGE (node: label {properties . . . . . . . })

Przed przejściem do przykładów w tej sekcji utwórz dwa węzły w bazie danych z etykietami Dhawan i Ind. Utwórz relację typu „BATSMAN_OF” z Dhawan do Ind, jak pokazano poniżej.

CREATE (Dhawan:player{name: "Shikar Dhawan", YOB: 1985, POB: "Delhi"}) 
CREATE (Ind:Country {name: "India"}) 
CREATE (Dhawan)-[r:BATSMAN_OF]->(Ind)

Scalanie węzła z etykietą

Możesz scalić węzeł w bazie danych na podstawie etykiety przy użyciu klauzuli MERGE. Jeśli spróbujesz scalić węzeł na podstawie etykiety, Neo4j sprawdzi, czy istnieje węzeł z podaną etykietą. Jeśli nie, zostanie utworzony bieżący węzeł.

Składnia

Poniżej przedstawiono składnię scalania węzła na podstawie etykiety.

MERGE (node:label) RETURN node

Przykład 1

Poniżej znajduje się przykładowe zapytanie Cypher, które scala węzeł w Neo4j (na podstawie etykiety). Kiedy wykonujesz to zapytanie, Neo4j sprawdza, czy istnieje węzeł z etykietąplayer. Jeśli nie, tworzy węzeł o nazwie „Jadeja” i zwraca go.

Jeśli istnieje węzeł o podanej etykiecie, Neo4j zwraca je wszystkie.

MERGE (Jadeja:player) RETURN Jadeja

Aby wykonać powyższe zapytanie, wykonaj następujące kroki -

Step 1- Otwórz aplikację komputerową Neo4j i uruchom serwer Neo4j. Otwórz wbudowaną aplikację przeglądarki Neo4j, używając adresu URLhttp://localhost:7474/ jak pokazano na poniższym zrzucie ekranu.

Step 2 - Skopiuj i wklej żądane zapytanie w monicie dolara i naciśnij przycisk odtwarzania (w celu wykonania zapytania) podświetlony na poniższym zrzucie ekranu.

Wynik

Podczas wykonywania otrzymasz następujący wynik. Ponieważ utworzyłeś już węzeł o nazwie „Dhawan” z etykietą „player” w bazie danych, Neo4j zwraca go, jak pokazano na poniższym zrzucie ekranu.

Przykład 2

Teraz spróbuj połączyć węzeł o nazwie „CT2013” ​​z etykietą o nazwie Turniej. Ponieważ nie ma węzłów z tą etykietą, Neo4j tworzy węzeł o podanej nazwie i zwraca go.

MERGE (CT2013:Tournament{name: "ICC Champions Trophy 2013"}) 
RETURN CT2013, labels(CT2013)

Aby wykonać powyższe zapytanie, wykonaj następujące kroki -

Step 1- Otwórz aplikację komputerową Neo4j i uruchom serwer Neo4j. Otwórz wbudowaną aplikację przeglądarki Neo4j, używając adresu URLhttp://localhost:7474/ jak pokazano na poniższym zrzucie ekranu.

Step 2 - Skopiuj i wklej żądane zapytanie w monicie dolara i naciśnij przycisk odtwarzania (w celu wykonania zapytania) podświetlony na poniższym zrzucie ekranu.

Wynik

Podczas wykonywania otrzymasz następujący wynik. Jak omówiono, ponieważ nie ma węzła o podanej etykiecie (turniej). Neo4j tworzy i zwraca określony węzeł, jak pokazano na poniższym zrzucie ekranu.

Scalanie węzła z właściwościami

Możesz również scalić węzeł z zestawem właściwości. Jeśli to zrobisz, Neo4j wyszuka równe dopasowanie dla określonego węzła, w tym właściwości. Jeśli nie znajdzie żadnego, tworzy go.

Składnia

Poniżej przedstawiono składnię scalania węzła za pomocą właściwości.

MERGE (node:label {key1:value, key2:value, key3:value . . . . . . . . })

Przykład

Poniżej znajduje się przykładowe zapytanie Cypher służące do scalania węzła za pomocą właściwości. To zapytanie próbuje scalić węzeł o nazwie „jadeja” przy użyciu właściwości i etykiety. Ponieważ nie ma takiego węzła z dokładną etykietą i właściwościami, Neo4j go utworzy.

MERGE (Jadeja:player {name: "Ravindra Jadeja", YOB: 1988, POB: "NavagamGhed"}) 
RETURN Jadeja

Aby wykonać powyższe zapytanie, wykonaj następujące kroki -

Step 1- Otwórz aplikację komputerową Neo4j i uruchom serwer Neo4j. Otwórz wbudowaną aplikację przeglądarki Neo4j, używając adresu URLhttp://localhost:7474/ jak pokazano na poniższym zrzucie ekranu.

Step 2 - Skopiuj i wklej żądane zapytanie w monicie dolara i naciśnij przycisk odtwarzania (w celu wykonania zapytania) podświetlony na poniższym zrzucie ekranu.

Wynik

Podczas wykonywania otrzymasz następujący wynik. Jak omówiono, ponieważ nie ma węzłów z określoną etykietą i właściwościami, tworzy jeden, jak pokazano na poniższym zrzucie ekranu.

OnCreate i OnMatch

Zawsze, gdy wykonujemy zapytanie scalające, węzeł jest dopasowywany lub tworzony. Używając przy tworzeniu i dopasowywaniu, możesz ustawić właściwości wskazujące, czy węzeł jest tworzony, czy dopasowywany.

Składnia

Poniżej znajduje się składnia OnCreate i OnMatch klauzule.

MERGE (node:label {properties . . . . . . . . . . .}) 
ON CREATE SET property.isCreated ="true" 
ON MATCH SET property.isFound ="true"

Przykład

Poniżej znajduje się przykładowe zapytanie Cypher, które demonstruje użycie OnCreate i OnMatchklauzule w Neo4j. Jeśli określony węzeł już istnieje w bazie danych, zostanie dopasowany, a właściwość z parą klucz-wartość isFound = "true" zostanie utworzona w węźle.

Jeśli określony węzeł nie istnieje w bazie danych, zostanie utworzony węzeł, aw nim utworzona zostanie właściwość z parą klucz-wartość isCreated = "true".

MERGE (Jadeja:player {name: "Ravindra Jadeja", YOB: 1988, POB: "NavagamGhed"}) 
ON CREATE SET Jadeja.isCreated = "true" 
ON MATCH SET Jadeja.isFound = "true" 
RETURN Jadeja

Aby wykonać powyższe zapytanie, wykonaj następujące kroki -

Step 1- Otwórz aplikację komputerową Neo4j i uruchom serwer Neo4j. Otwórz wbudowaną aplikację przeglądarki Neo4j, używając adresu URLhttp://localhost:7474/ jak pokazano na poniższym zrzucie ekranu.

Step 2 - Skopiuj i wklej żądane zapytanie w monicie dolara i naciśnij przycisk odtwarzania (w celu wykonania zapytania) podświetlony na poniższym zrzucie ekranu.

Wynik

Podczas wykonywania otrzymasz następujący wynik. Jak już wspomniano, ponieważ nie ma węzła z określonymi szczegółami, Neo4j utworzył go wraz z właściwościąisFound jak pokazano na poniższym zrzucie ekranu.

Scal związek

Podobnie jak w przypadku węzłów, można również scalić relacje za pomocą klauzuli MERGE.

Przykład

Poniżej znajduje się przykładowe zapytanie Cypher, które scala relację za pomocą klauzuli MATCH w Neo4j. To zapytanie próbuje scalić relację o nazwieWINNERS_OF między węzłami „ind” (etykieta: Kraj i nazwa: Indie) a ICC13 (etykieta: Turniej i nazwa: ICC Champions Trophy 2013).

Ponieważ taka relacja nie istnieje, Neo4j ją tworzy.

MATCH (a:Country), (b:Tournament) 
   WHERE a.name = "India" AND b.name = "ICC Champions Trophy 2013" 
   MERGE (a)-[r:WINNERS_OF]->(b) 
RETURN a, b

Aby wykonać powyższe zapytanie, wykonaj następujące kroki -

Step 1- Otwórz aplikację komputerową Neo4j i uruchom serwer Neo4j. Otwórz wbudowaną aplikację przeglądarki Neo4j, używając adresu URLhttp://localhost:7474/ jak pokazano na poniższym zrzucie ekranu.

Step 2 - Skopiuj i wklej żądane zapytanie w monicie dolara i naciśnij przycisk odtwarzania (w celu wykonania zapytania) podświetlony na poniższym zrzucie ekranu.

Wynik

Podczas wykonywania otrzymasz następujący wynik. Ponieważ określona relacja nie istnieje w bazie danych, Neo4j tworzy ją, jak pokazano na poniższym zrzucie ekranu.

W ten sam sposób możesz scalić wiele relacji, a także relacje pośrednie.