在Neo4J中,创建两个节点之间的关系,但是如果其中一个节点不存在,则在同一调用中创建关系

克里斯蒂安·阿卡(KristianAčkar)

我的Neo4J图形数据库中有两个节点,分别是节点User和节点Video,我想在它们之间创建关系。

节点用户肯定存在,但节点视频可能不存在。如果是这种情况,则应使用给定的id进行创建,并且在创建节点之间之后,还要创建它们之间的关系。

我知道我可以先检查Video节点是否存在,如果不存在,则可以先创建它。但是是否可以在单个调用中创建“视频”节点(如果尚不存在)以及“用户”和“视频”节点之间的关系?

另外,我必须防止某些并发请求在第一个请求完成作业之前创建相同的Video节点。

因此,请给我一些想法,以实现此要求。我对图数据库概念和Neo4J非常陌生。

克里斯蒂安·阿卡(KristianAčkar)

根据Stefan Ambruster的提示,我在Cypher中研究了MERGE语句,并创建了一个单语句调用,通过该调用,我实现了创建视频节点(如果不存在)的目标,并在此之后在用户节点和视频节点之间建立了关系。

暗号:

MERGE (user:User {uuid : {user_uuid}})
ON CREATE user
SET user.uuid = {user_uuid}

MERGE (video:Video {id : {video_id}})
ON CREATE video
SET video.id = {video_id}

CREATE UNIQUE user-[:SHARED {ts : timestamp()}]->video

这符合我的需求。我还保留创建的User节点(如果不存在),而不仅仅是Video节点。

该方法/声明是否有任何可能的改进或陷阱?

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

Related 相关文章

热门标签

归档