我的Neo4J图形数据库中有两个节点,分别是节点User和节点Video,我想在它们之间创建关系。
节点用户肯定存在,但节点视频可能不存在。如果是这种情况,则应使用给定的id进行创建,并且在创建节点之间之后,还要创建它们之间的关系。
我知道我可以先检查Video节点是否存在,如果不存在,则可以先创建它。但是是否可以在单个调用中创建“视频”节点(如果尚不存在)以及“用户”和“视频”节点之间的关系?
另外,我必须防止某些并发请求在第一个请求完成作业之前创建相同的Video节点。
因此,请给我一些想法,以实现此要求。我对图数据库概念和Neo4J非常陌生。
根据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] 删除。
我来说两句