簡體   English   中英

如何在neo4j密碼中僅與一個節點(名稱相似)建立關系?

[英]How to create relationship to just one node (with a similar name) in neo4j cypher?

我想設計一個關於機場的數據庫。 每個機場至少有五個航站樓(分別為A,B,C,D和E)。 所以我想讓史基浦機場包括A,B,C,D,E。 但是我創建了五個名為“ A”的終端,因此如果運行以下代碼:

MATCH (a:Airport{name:"Schiphol"}),(b:Terminal{name:"A"}) CREATE (a)-[r: INCLUDES]->(b)

它會將每個候機樓A連接到史基浦。 我該如何避免這種情況,而只給機場分配一組A,B,C,D和E?

提前致謝

MERGE將成為此處的解決方案,創建包括航站樓的機場模式,但不提前創建:Terminal節點。

當您將MERGE用於模式時,其中一個節點已被綁定(:Airport節點)而另一個未綁定(:Terminal),則如果需要創建模式,則將創建未綁定的節點以及關系節點之間。 這是您在每個機場創建航站樓的方式。

MATCH (a:Airport{name:"Schiphol"})
MERGE (a)-[:INCLUDES]->(termA:Terminal{name:"A"}) 

如果要在每個機場一次創建所有航站樓,請執行以下操作:

MATCH (a:Airport{name:"Schiphol"})
UNWIND ['A','B','C','D','E'] as term
MERGE (a)-[:INCLUDES]->(terminal:Terminal{name:term})

為什么要有五個帶有“ A”名稱的端子? 解決方案可以是:

MATCH (a:Airport{name:"Schiphol"})
MATCH (b:Terminal{name:"A"}) 
WITH a, COLLECT (b) as terminals
WITH a, HEAD(terminals) as terminal 
CREATE (a)-[r: INCLUDES]->(terminal)

(未嘗試)但這是任意的...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM