2013-09-25 3 views
0

Neo4J 그래프 db 노드 노드와 사용자 노드 노드에 두 개의 노드가 있으며 그 사이에 관계를 만들고 싶습니다. .Neo4J에서는 두 노드 사이의 관계를 만들지 만 노드 중 하나가 존재하지 않으면 동일한 호출로 만듭니다.

노드 사용자는 확실히 존재하지만 비디오 노드는 그렇지 않을 수 있습니다. 이 경우 해당 id로 생성해야하며, 그 사이에 노드 관계를 만든 후에도 만들어야합니다.

먼저 비디오 노드가 있는지 확인할 수 있습니다. 존재하지 않으면 먼저 만들 수 있습니다. 그러나 비디오 노드 생성 (아직 존재하지 않는 경우) 및 사용자와 비디오 노드 간의 관계는 단일 호출로 수행 할 수 있습니까?

또한, 일부 동시 요청이 첫 번째 요청 완료 작업 전에 동일한 비디오 노드를 만드는 것을 방지해야합니다.

이 요청을 달성하는 방법을 알려주십시오. 나는 그래프 데이터베이스 개념과 Neo4J에 대해 매우 새롭다.

답변

1

Stephan 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 

이 내 필요 좋은 솔기. 또한 비디오 노드가 아닌 사용자 노드가 생성 된 경우이를 보존합니다.

이 aproach/statement의 개선점이나 함정은 있습니까?

1

Cypher를 사용하고 있고 이미 neo4j 2.0.0-M05에있는 경우 MERGE 명령을 사용할 수 있습니다.

+0

MERGE 명령문은 이에 적합한 도구입니다. MERGE 문을 사용하면 모든 객체가 존재 함을 보장 할 수 있습니다. –

관련 문제