Neo4j - Komutu Birleştir
MERGE komutu, CREATE komutu ve MATCH komutunun bir kombinasyonudur.
Neo4j CQL MERGE komutu grafikte belirli bir örüntüyü arar. Varsa, sonuçları döndürür.
Grafikte mevcut DEĞİLSE, yeni bir düğüm / ilişki oluşturur ve sonuçları döndürür.
Bu bölümde nasıl yapılacağını öğreneceksiniz -
- Bir düğümü etiketle birleştir
- Bir düğümü özelliklerle birleştirme
- OnCreate ve OnMatch
- Bir ilişkiyi birleştir
Sözdizimi
MERGE komutunun sözdizimi aşağıdadır.
MERGE (node: label {properties . . . . . . . })
Bu bölümdeki örneklere geçmeden önce, Dhawan ve Ind etiketleriyle veritabanında iki düğüm oluşturun. Aşağıda gösterildiği gibi Dhawan'dan Ind'e “BATSMAN_OF” tipi bir ilişki oluşturun.
CREATE (Dhawan:player{name: "Shikar Dhawan", YOB: 1985, POB: "Delhi"})
CREATE (Ind:Country {name: "India"})
CREATE (Dhawan)-[r:BATSMAN_OF]->(Ind)
Bir Düğümü Etiketle Birleştirme
MERGE yan tümcesini kullanarak etikete göre veritabanındaki bir düğümü birleştirebilirsiniz. Etikete göre bir düğümü birleştirmeye çalışırsanız, Neo4j verilen etikete sahip herhangi bir düğüm olup olmadığını doğrular. Değilse, mevcut düğüm oluşturulacaktır.
Sözdizimi
Aşağıda, bir düğümü bir etikete göre birleştirmek için sözdizimi verilmiştir.
MERGE (node:label) RETURN node
örnek 1
Aşağıda, bir düğümü Neo4j'ye (etikete göre) birleştiren örnek bir Cypher Sorgusu verilmiştir. Bu sorguyu yürüttüğünüzde Neo4j, etikete sahip herhangi bir düğüm olup olmadığını doğrular.player. Değilse, "Jadeja" adlı bir düğüm oluşturur ve onu döndürür.
Verilen etikete sahip herhangi bir düğüm varsa, Neo4j hepsini döndürür.
MERGE (Jadeja:player) RETURN Jadeja
Yukarıdaki sorguyu yürütmek için aşağıdaki adımları uygulayın -
Step 1- Neo4j masaüstü Uygulamasını açın ve Neo4j Sunucusunu başlatın. URL'yi kullanarak Neo4j'nin yerleşik tarayıcı uygulamasını açınhttp://localhost:7474/ aşağıdaki ekran görüntüsünde gösterildiği gibi.
Step 2 - Dolar istemine istenen sorguyu kopyalayıp yapıştırın ve aşağıdaki ekran görüntüsünde vurgulanan oynat düğmesine (sorguyu yürütmek için) basın.
Sonuç
Çalıştırma sırasında aşağıdaki sonucu alacaksınız. Veritabanında "oynatıcı" etiketli "Dhawan" adında bir düğüm oluşturduğunuzdan, Neo4j aşağıdaki ekran görüntüsünde gösterildiği gibi onu döndürür.
Örnek 2
Şimdi, "CT2013" adlı bir düğümü Turnuva adlı bir etiketle birleştirmeyi deneyin. Bu etikete sahip düğüm olmadığından, Neo4j verilen isimde bir düğüm oluşturur ve onu döndürür.
MERGE (CT2013:Tournament{name: "ICC Champions Trophy 2013"})
RETURN CT2013, labels(CT2013)
Yukarıdaki sorguyu yürütmek için aşağıdaki adımları uygulayın -
Step 1- Neo4j masaüstü uygulamasını açın ve Neo4j Sunucusunu başlatın. URL'yi kullanarak Neo4j'nin yerleşik tarayıcı uygulamasını açınhttp://localhost:7474/ aşağıdaki ekran görüntüsünde gösterildiği gibi.
Step 2 - Dolar istemine istenen sorguyu kopyalayıp yapıştırın ve aşağıdaki ekran görüntüsünde vurgulanan oynat düğmesine (sorguyu yürütmek için) basın.
Sonuç
Çalıştırma sırasında aşağıdaki sonucu alacaksınız. Belirtildiği gibi, verilen etikete (Turnuva) sahip bir düğüm olmadığından. Neo4j, aşağıdaki ekran görüntüsünde gösterildiği gibi belirtilen düğümü oluşturur ve döndürür.
Bir Düğümü Özelliklerle Birleştirme
Ayrıca bir düğümü bir dizi özellik ile birleştirebilirsiniz. Bunu yaparsanız, Neo4j, özellikler de dahil olmak üzere belirtilen düğüm için eşit bir eşleşme arar. Bulamazsa, bir tane yaratır.
Sözdizimi
Bir düğümü özellikleri kullanarak birleştirmek için sözdizimi aşağıdadır.
MERGE (node:label {key1:value, key2:value, key3:value . . . . . . . . })
Misal
Aşağıda, özellikleri kullanarak bir düğümü birleştirmek için örnek bir Cypher Sorgusu verilmiştir. Bu sorgu, özellikleri ve etiketi kullanarak "jadeja" adlı düğümü birleştirmeye çalışır. Tam etiket ve özelliklere sahip böyle bir düğüm olmadığından, Neo4j bir tane oluşturur.
MERGE (Jadeja:player {name: "Ravindra Jadeja", YOB: 1988, POB: "NavagamGhed"})
RETURN Jadeja
Yukarıdaki sorguyu yürütmek için aşağıdaki adımları uygulayın -
Step 1- Neo4j masaüstü uygulamasını açın ve Neo4j Sunucusunu başlatın. URL'yi kullanarak Neo4j'nin yerleşik tarayıcı uygulamasını açınhttp://localhost:7474/ aşağıdaki ekran görüntüsünde gösterildiği gibi.
Step 2 - Dolar istemine istenen sorguyu kopyalayıp yapıştırın ve aşağıdaki ekran görüntüsünde vurgulanan oynat düğmesine (sorguyu yürütmek için) basın.
Sonuç
Çalıştırma sırasında aşağıdaki sonucu alacaksınız. Tartışıldığı gibi, belirtilen etiket ve özelliklere sahip düğüm olmadığından, aşağıdaki ekran görüntüsünde gösterildiği gibi bir tane oluşturur.
OnCreate ve OnMatch
Ne zaman, bir birleştirme sorgusu yürütsek, bir düğüm eşleştirilir veya oluşturulur. Oluşturma ve eşleştirme sırasında kullanarak, düğümün oluşturulduğunu veya eşleştiğini belirtmek için özellikler ayarlayabilirsiniz.
Sözdizimi
Aşağıdaki sözdizimi OnCreate ve OnMatch maddeleri.
MERGE (node:label {properties . . . . . . . . . . .})
ON CREATE SET property.isCreated ="true"
ON MATCH SET property.isFound ="true"
Misal
Aşağıda, Cypher Query'nin kullanımını gösteren örnek bir OnCreate ve OnMatchNeo4j'deki maddeler. Belirtilen düğüm veritabanında zaten mevcutsa, düğüm eşleştirilir ve düğümde anahtar / değer çifti isFound = "true" olan özellik oluşturulur.
Belirtilen düğüm veritabanında yoksa, düğüm oluşturulur ve içinde anahtar / değer çiftine sahip bir özellik isCreated = "true" oluşturulur.
MERGE (Jadeja:player {name: "Ravindra Jadeja", YOB: 1988, POB: "NavagamGhed"})
ON CREATE SET Jadeja.isCreated = "true"
ON MATCH SET Jadeja.isFound = "true"
RETURN Jadeja
Yukarıdaki sorguyu yürütmek için aşağıdaki adımları uygulayın -
Step 1- Neo4j masaüstü Uygulamasını açın ve Neo4j Sunucusunu başlatın. URL'yi kullanarak Neo4j'nin yerleşik tarayıcı uygulamasını açınhttp://localhost:7474/ aşağıdaki ekran görüntüsünde gösterildiği gibi.
Step 2 - Dolar istemine istenen sorguyu kopyalayıp yapıştırın ve aşağıdaki ekran görüntüsünde vurgulanan oynat düğmesine (sorguyu yürütmek için) basın.
Sonuç
Çalıştırma sırasında aşağıdaki sonucu alacaksınız. Bahsedildiği gibi, belirtilen ayrıntılara sahip bir düğüm olmadığından, Neo4j onu özellik ile birlikte oluşturduisFound aşağıdaki ekran görüntüsünde gösterildiği gibi.
Bir İlişkiyi Birleştirme
Tıpkı düğümler gibi, MERGE yan tümcesini kullanarak ilişkileri de birleştirebilirsiniz.
Misal
Aşağıda, Neo4j'deki MATCH cümlesini kullanarak bir ilişkiyi birleştiren örnek bir Cypher Query verilmiştir. Bu sorgu, adlı bir ilişkiyi birleştirmeye çalışırWINNERS_OF "ind" (etiket: Ülke ve isim: Hindistan) ve ICC13 (etiket: Turnuva ve isim: ICC Champions Trophy 2013) düğümleri arasında.
Böyle bir ilişki olmadığı için Neo4j bir tane yaratır.
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
Yukarıdaki sorguyu yürütmek için aşağıdaki adımları uygulayın -
Step 1- Neo4j masaüstü Uygulamasını açın ve Neo4j Sunucusunu başlatın. URL'yi kullanarak Neo4j'nin yerleşik tarayıcı uygulamasını açınhttp://localhost:7474/ aşağıdaki ekran görüntüsünde gösterildiği gibi.
Step 2 - Dolar istemine istenen sorguyu kopyalayıp yapıştırın ve aşağıdaki ekran görüntüsünde vurgulanan oynat düğmesine (sorguyu yürütmek için) basın.
Sonuç
Çalıştırma sırasında aşağıdaki sonucu alacaksınız. Belirtilen ilişki veritabanında bulunmadığından, Neo4j aşağıdaki ekran görüntüsünde gösterildiği gibi bir ilişki oluşturur.
Aynı şekilde, birden çok ilişkiyi ve yönlendirilmemiş ilişkileri de birleştirebilirsiniz.