官术网_书友最值得收藏!

  • 精通Neo4j
  • 龐國明等
  • 702字
  • 2023-07-17 19:01:14

3.3.13 CREATE UNIQUE語句

CREATE UNIQUE語句相當于MATCH和CREATE的混合體—盡可能地匹配,然后創建未匹配到的。

提示:可能會想到用MERGE來代替CREATE UNIQUE,然而MERGE并不能很強地保證關系的唯一性。

3.3.13.1 簡介

CREATE UNIQUE介于MATCH和CREATE之間,其作用是匹配所能匹配得上的,創建不存在的。CREATE UNIQUE盡可能地減少對圖的改變,充分利用已有的圖。與MATCH的另外一個不同是,CREATE UNIQUE假設模式是唯一性的,如果有多個匹配的子圖可以找到,則此時將會報錯。

CREATE UNIQUE圖例如圖3-16所示。

圖3-16 CREATE UNIQUE圖例

3.3.13.2 創建唯一節點

1.創建未匹配到的節點

如果模式描述的節點未匹配到,則創建一個新節點。

查詢:

root節點沒有任何LOVES關系。因此,創建了一個節點及其與root節點的LOVES關系。

結果:

2.用含值的模式創建節點

描述的模式可以在節點中包含值,語法為prop: <expression>。

查詢:

沒有與root節點相連的name為D的節點,所以創建一個新的節點來匹配該模式。

結果:

3.創建未匹配到帶標簽的節點

如果描述的模式需要一個帶標簽的節點,而數據庫中沒有帶給定標簽的節點,Cypher將創建一個新的節點。

查詢:

與A節點相連的KNOWS關系有一個C節點,但C節點沒有blue標簽,那么將創建一個帶有blue標簽的節點和從A到它的KNOWS關系。

結果:

3.3.13.3 創建唯一關系

1.創建未匹配到的關系

CREATE UNIQUE用于描述應該被找到的或需要創建的模式。

查詢:

匹配一個左節點和兩個右節點之間的關系。其中一個關系已存在,因此能匹配到,然后創建了不存在的關系。

結果:

2.用含值的模式創建關系

創建模式中含值的關系。

查詢:

本例中希望關系有一個值,因為沒有這樣的關系匹配到,因此創建了一個新節點和關系。注意,因為不關心創建的節點,所以沒有對該節點命名。

結果:

3.3.13.4 描述復雜模式

就像MATCH和CREATE語句一樣,CREATE UNIQUE描述的模式也可以用逗號分隔。

查詢:

本例中的模式使用了兩條用逗號分隔的路徑。

結果:

主站蜘蛛池模板: 青铜峡市| 无锡市| 锡林郭勒盟| 张家界市| 锡林郭勒盟| 利辛县| 岑溪市| 哈巴河县| 稷山县| 庆安县| 本溪市| 萍乡市| 新郑市| 当涂县| 沂源县| 杭锦旗| 高邮市| 金湖县| 襄垣县| 中阳县| 昭通市| 忻城县| 安吉县| 大化| 原阳县| 安泽县| 德保县| 顺平县| 敦化市| 乳源| 德阳市| 浮梁县| 台中市| 乃东县| 扎兰屯市| 聊城市| 天全县| 永清县| 宁远县| 新绛县| 朝阳市|