Neo4j CQL - 合并

2023-01-03 10:09 更新

Neo4j使用CQL MERGE命令 - 

  • 創(chuàng)建節(jié)點(diǎn),關(guān)系和屬性

  • 為從數(shù)據(jù)庫(kù)檢索數(shù)據(jù)

MERGE命令是CREATE命令和MATCH命令的組合。

MERGE = CREATE + MATCH

Neo4j CQL MERGE命令在圖中搜索給定模式,如果存在,則返回結(jié)果

如果它不存在于圖中,則它創(chuàng)建新的節(jié)點(diǎn)/關(guān)系并返回結(jié)果。


Neo4j CQL MERGE語(yǔ)法

MERGE (<node-name>:<label-name>
{
   <Property1-name>:<Property1-Value>
   .....
   <Propertyn-name>:<Propertyn-Value>
})


語(yǔ)法說(shuō)明:

S.No.語(yǔ)法元素描述
1MERGE它是一個(gè)Neo4j CQL關(guān)鍵字。
2<node-name>它是節(jié)點(diǎn)或關(guān)系的名稱。
3<label-name>它是節(jié)點(diǎn)或關(guān)系的標(biāo)簽名稱。
4<property_name>它是節(jié)點(diǎn)或關(guān)系的屬性名稱。
5<property_value>它是節(jié)點(diǎn)或關(guān)系的屬性值。
6使用colon(:)運(yùn)算符來(lái)分隔節(jié)點(diǎn)或關(guān)系的屬性名稱和值。


注意 -

Neo4j CQL MERGE命令語(yǔ)法與CQL CREATE命令類似。

我們將使用這兩個(gè)命令執(zhí)行以下操作 - 

  • 創(chuàng)建具有一個(gè)屬性的配置文件節(jié)點(diǎn):Id,名稱

  • 創(chuàng)建具有相同屬性的同一個(gè)Profile節(jié)點(diǎn):Id,Name

  • 檢索所有Profile節(jié)點(diǎn)詳細(xì)信息并觀察結(jié)果

我們將使用CREATE命令執(zhí)行這些操作


Neo4j CQL CREATE示例

此示例通過(guò)使用CREATE,MATCH和RETURN命令創(chuàng)建Google+個(gè)人資料,執(zhí)行上述所有操作。

操作(1):創(chuàng)建具有屬性:Id,Name的Profile節(jié)點(diǎn)


步驟1 -打開Neo4j數(shù)據(jù)瀏覽器


打開Neo4j數(shù)據(jù)瀏覽器


步驟2 -在數(shù)據(jù)瀏覽器上鍵入以下命令
CREATE (gp1:GoogleProfile1 {Id: 201401, Name:"Apple"})


CREATE (gp1:GoogleProfile1 {Id: 201401, Name:"Apple"})


步驟3 -點(diǎn)擊“執(zhí)行”按鈕并觀察結(jié)果。


添加兩個(gè)屬性
如果我們觀察到成功消息,它已經(jīng)向GoogleProfile1節(jié)點(diǎn)添加了兩個(gè)屬性。


操作(2):創(chuàng)建具有相同屬性的同一個(gè)Profile節(jié)點(diǎn):Id,Name。


步驟1 -打開Neo4j的數(shù)據(jù)瀏覽器


步驟2 -輸入在數(shù)據(jù)瀏覽器下面的命令

CREATE (gp1:GoogleProfile1 {Id: 201401, Name:"Apple"})


步驟3 -點(diǎn)擊“執(zhí)行”按鈕并觀察結(jié)果。


如果我們觀察到成功消息,它已經(jīng)向GoogleProfile1節(jié)點(diǎn)添加了兩個(gè)屬性。


操作(3):檢索所有Profile節(jié)點(diǎn)詳細(xì)信息并觀察結(jié)果。

步驟1 -打開Neo4j數(shù)據(jù)瀏覽器


步驟2 -在數(shù)據(jù)瀏覽器上鍵入以下命令

MATCH  (gp1:GoogleProfile1) 
RETURN gp1.Id,gp1.Name


MATCH  (gp1:GoogleProfile1)  RETURN gp1.Id,gp1.Name


步驟3 -點(diǎn)擊“執(zhí)行”按鈕并觀察結(jié)果。


2行重復(fù)的值
如果我們觀察到上面的查詢結(jié)果,它顯示2行重復(fù)的值。


CQL CREATE命令檢查此節(jié)點(diǎn)是否可用,它只是在數(shù)據(jù)庫(kù)中創(chuàng)建新節(jié)點(diǎn)。

通過(guò)觀察這些結(jié)果,我們可以說(shuō)CREATE命令總是向數(shù)據(jù)庫(kù)添加新的節(jié)點(diǎn)。


Neo4j CQL MERGE示例

此示例通過(guò)使用MERGE和RETURN命令創(chuàng)建Google+個(gè)人資料,執(zhí)行相同的上述操作。

操作(1):創(chuàng)建具有屬性:Id,Name的Profile節(jié)點(diǎn)

步驟1 -打開Neo4j數(shù)據(jù)瀏覽器


步驟2 -在數(shù)據(jù)瀏覽器上鍵入以下命令

MERGE (gp2:GoogleProfile2{ Id: 201402,Name:"Nokia"})


MERGE (gp2:GoogleProfile2{ Id: 201402,Name:"Nokia"})


步驟3 -點(diǎn)擊“執(zhí)行”按鈕并觀察結(jié)果。


向GoogleProfile1節(jié)點(diǎn)添加了兩個(gè)屬性
如果我們觀察到成功消息,它已經(jīng)向GoogleProfile1節(jié)點(diǎn)添加了兩個(gè)屬性。


操作(2):創(chuàng)建具有相同屬性的同一個(gè)Profile節(jié)點(diǎn):Id,Name。


步驟1 -打開Neo4j數(shù)據(jù)瀏覽器


步驟2 -在數(shù)據(jù)瀏覽器上鍵入以下命令

MERGE (gp2:GoogleProfile2{ Id: 201402,Name:"Nokia"})


MERGE (gp2:GoogleProfile2{ Id: 201402,Name:"Nokia"})


步驟3 -點(diǎn)擊“執(zhí)行”按鈕并觀察結(jié)果。


如果我們觀察到成功消息,它已經(jīng)向GoogleProfile1節(jié)點(diǎn)添加了兩個(gè)屬性。


操作(3):檢索所有Profile節(jié)點(diǎn)詳細(xì)信息并觀察結(jié)果

步驟1 -打開Neo4j數(shù)據(jù)瀏覽器


步驟2 -在數(shù)據(jù)瀏覽器上鍵入以下命令

MATCH  (gp2:GoogleProfile2) 
RETURN gp2.Id,gp2.Name


MATCH  (gp1:GoogleProfile1)  RETURN gp1.Id,gp1.Name


步驟3 -點(diǎn)擊“執(zhí)行”按鈕并觀察結(jié)果。


如果我們觀察上面的查詢結(jié)果,它只顯示一行,因?yàn)镃QL MERGE命令檢查該節(jié)點(diǎn)在數(shù)據(jù)庫(kù)中是否可用。 如果它不存在,它創(chuàng)建新節(jié)點(diǎn)。 否則,它不創(chuàng)建新的。

通過(guò)觀察這些結(jié)果,我們可以說(shuō),CQL MERGE命令將新的節(jié)點(diǎn)添加到數(shù)據(jù)庫(kù),只有當(dāng)它不存在。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)