[英]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.