Neo4j - Perintah Gabung

Perintah MERGE merupakan gabungan dari perintah CREATE dan perintah MATCH.

Perintah Neo4j CQL MERGE mencari pola tertentu dalam grafik. Jika ada, maka hasilnya akan dikembalikan.

Jika TIDAK ada dalam grafik, maka itu membuat simpul / hubungan baru dan mengembalikan hasilnya.

Dalam bab ini Anda akan belajar bagaimana -

  • Gabungkan node dengan label
  • Gabungkan node dengan properti
  • OnCreate dan OnMatch
  • Gabungkan hubungan

Sintaksis

Berikut ini adalah sintaks untuk perintah MERGE.

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

Sebelum melanjutkan ke contoh di bagian ini, buat dua node di database dengan label Dhawan dan Ind. Buat hubungan tipe “BATSMAN_OF” dari Dhawan ke Ind seperti yang ditunjukkan di bawah ini.

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

Menggabungkan Node dengan Label

Anda dapat menggabungkan node dalam database berdasarkan label menggunakan klausa MERGE. Jika Anda mencoba untuk menggabungkan node berdasarkan label, maka Neo4j memverifikasi apakah ada node dengan label yang diberikan. Jika tidak, node saat ini akan dibuat.

Sintaksis

Berikut ini sintaks untuk menggabungkan node berdasarkan label.

MERGE (node:label) RETURN node

Contoh 1

Berikut ini adalah contoh Permintaan Cypher yang menggabungkan node ke Neo4j (berdasarkan label). Saat Anda menjalankan kueri ini, Neo4j memverifikasi apakah ada node dengan labelplayer. Jika tidak, itu membuat node bernama "Jadeja" dan mengembalikannya.

Jika, ada node dengan label yang diberikan, Neo4j mengembalikan semuanya.

MERGE (Jadeja:player) RETURN Jadeja

Untuk menjalankan kueri di atas, lakukan langkah-langkah berikut -

Step 1- Buka Aplikasi desktop Neo4j dan mulai Server Neo4j. Buka aplikasi browser bawaan Neo4j menggunakan URLhttp://localhost:7474/ seperti yang ditunjukkan pada tangkapan layar berikut.

Step 2 - Salin dan tempel kueri yang diinginkan di prompt dolar dan tekan tombol putar (untuk menjalankan kueri) yang disorot di tangkapan layar berikut.

Hasil

Saat menjalankan, Anda akan mendapatkan hasil sebagai berikut. Karena Anda telah membuat node bernama "Dhawan" dengan label "player" di database, Neo4j mengembalikannya seperti yang ditunjukkan pada screenshot berikut.

Contoh 2

Sekarang, coba gabungkan node bernama "CT2013" dengan label bernama Turnamen. Karena tidak ada node dengan label ini, Neo4j membuat node dengan nama yang diberikan dan mengembalikannya.

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

Untuk menjalankan kueri di atas, lakukan langkah-langkah berikut -

Step 1- Buka Aplikasi desktop Neo4j dan Mulai Server Neo4j. Buka aplikasi browser bawaan Neo4j menggunakan URLhttp://localhost:7474/ seperti yang ditunjukkan pada tangkapan layar berikut.

Step 2 - Salin dan tempel kueri yang diinginkan di prompt dolar dan tekan tombol putar (untuk menjalankan kueri) yang disorot di tangkapan layar berikut.

Hasil

Saat menjalankan, Anda akan mendapatkan hasil sebagai berikut. Seperti yang telah dibahas, karena tidak ada node dengan label yang diberikan (Turnamen). Neo4j membuat dan mengembalikan node yang ditentukan seperti yang ditunjukkan pada tangkapan layar berikut.

Menggabungkan Node dengan Properti

Anda juga dapat menggabungkan node dengan sekumpulan properti. Jika Anda melakukannya, Neo4j mencari kecocokan yang sama untuk node yang ditentukan, termasuk propertinya. Jika tidak ditemukan, itu membuatnya.

Sintaksis

Berikut sintaks untuk menggabungkan node menggunakan properti.

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

Contoh

Berikut ini adalah contoh Permintaan Cypher untuk menggabungkan node menggunakan properti. Query ini mencoba untuk menggabungkan node bernama “jadeja” menggunakan properti dan label. Karena tidak ada node dengan label dan properti yang tepat, Neo4j membuatnya.

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

Untuk menjalankan kueri di atas, lakukan langkah-langkah berikut -

Step 1- Buka Aplikasi desktop Neo4j dan Mulai Server Neo4j. Buka aplikasi browser bawaan Neo4j menggunakan URLhttp://localhost:7474/ seperti yang ditunjukkan pada tangkapan layar berikut.

Step 2 - Salin dan tempel kueri yang diinginkan di prompt dolar dan tekan tombol putar (untuk menjalankan kueri) yang disorot di tangkapan layar berikut.

Hasil

Saat menjalankan, Anda akan mendapatkan hasil sebagai berikut. Seperti yang telah dibahas, karena tidak ada node dengan label dan properti yang ditentukan, itu membuatnya, seperti yang ditunjukkan pada tangkapan layar berikut.

OnCreate dan OnMatch

Setiap kali, kami menjalankan kueri gabungan, sebuah node dicocokkan atau dibuat. Menggunakan on create dan on match, Anda dapat menyetel properti untuk menunjukkan apakah node dibuat atau cocok.

Sintaksis

Berikut ini adalah sintaks OnCreate dan OnMatch klausul.

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

Contoh

Berikut ini adalah contoh Permintaan Cypher yang mendemonstrasikan penggunaan OnCreate dan OnMatchklausul di Neo4j. Jika node yang ditentukan sudah ada di database, maka node akan dicocokkan dan properti dengan key-value pair isFound = "true" akan dibuat di node.

Jika node yang ditentukan tidak ada di database, node akan dibuat, dan di dalamnya properti dengan key-value pair isCreated = "true" akan dibuat.

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

Untuk menjalankan kueri di atas, lakukan langkah-langkah berikut -

Step 1- Buka Aplikasi desktop Neo4j dan mulai Server Neo4j. Buka aplikasi browser bawaan Neo4j menggunakan URLhttp://localhost:7474/ seperti yang ditunjukkan pada tangkapan layar berikut.

Step 2 - Salin dan tempel kueri yang diinginkan di prompt dolar dan tekan tombol putar (untuk menjalankan kueri) yang disorot di tangkapan layar berikut.

Hasil

Saat menjalankan, Anda akan mendapatkan hasil sebagai berikut. Seperti yang telah dibahas, karena tidak ada node dengan detail yang ditentukan, Neo4j membuatnya bersama dengan propertinyaisFound seperti yang ditunjukkan pada tangkapan layar berikut.

Gabungkan Hubungan

Sama seperti node, Anda juga dapat menggabungkan hubungan menggunakan klausa MERGE.

Contoh

Berikut ini adalah contoh Permintaan Cypher yang menggabungkan hubungan menggunakan klausa MATCH di Neo4j. Kueri ini mencoba menggabungkan hubungan bernamaWINNERS_OF antara node “ind” (label: Country & name: India) dan ICC13 (label: Tournament & name: ICC Champions Trophy 2013).

Karena relasi seperti itu tidak ada, Neo4j membuatnya.

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

Untuk menjalankan kueri di atas, lakukan langkah-langkah berikut -

Step 1- Buka Aplikasi desktop Neo4j dan mulai Server Neo4j. Buka aplikasi browser bawaan Neo4j menggunakan URLhttp://localhost:7474/ seperti yang ditunjukkan pada tangkapan layar berikut.

Step 2 - Salin dan tempel kueri yang diinginkan di prompt dolar dan tekan tombol putar (untuk menjalankan kueri) yang disorot di tangkapan layar berikut.

Hasil

Saat menjalankan, Anda akan mendapatkan hasil sebagai berikut. Karena relasi yang ditentukan tidak ada dalam database, Neo4j membuatnya seperti yang ditunjukkan pada tangkapan layar berikut.

Dengan cara yang sama, Anda juga bisa menggabungkan beberapa hubungan dan hubungan tidak terarah.