database - 如何在 neo4j 密码中仅与一个节点(具有相似名称)创建关系?
问题描述
我想设计一个关于机场的数据库。每个机场至少有五个航站楼(分别命名为 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})
推荐阅读
- css - 使用 ` 为 SVG 生成 IMG src 数据 URI
- python-3.x - 如何根据时间戳从数据框中删除重复条目?
- python - pip install pywin32 在 mac 机器上失败
- windows - LLVM 在 Windows 上构建:跳过了 Visual Studio cl.exe
- c# - Emgu GetAverage 图像的黑色颜色
- javascript - TypeError:Discord.Streaming 不是函数
- r - ggsave 不保存仅最后一个情节
- google-apps-script - 如何在谷歌应用程序脚本中包含 aws cognito 身份验证?
- python - 如何使用带有 .devcontainer.json 的 Docker 在 VSCode 中启动 jupyter lab
- c# - 如何在 C# 中使用 smtp 发送记录的电子邮件?