2016-03-07 67 views
-2

问题陈述: 添加两个输入节点N1和N2与边缘定向N1 - [:REL] - > N2Neo4j的:加入现有节点中的Neo4j图形

1. if n1-[:rel]->n2 exists ignore 
2. if n1 and n2 exists but not with [:rel] 
    create a new relationship edge between the existing nodes 
3. if n1 doesnt exist 
    create n1 and join n1 and existing n2 with edge [:rel] 
4. if n2 doesnt exist 
    create n2 and join n2 and existing n1 with edge [:rel] 

查询:

INSERT_QUERY = ''' FOREACH(t IN {term_mod_pair_list}| 
    MERGE(tt:target_Word {type:'target_term',word:t[0]['word'],pos:t[0]['tag']})- 
    [:MODIFIER]->(mod:mod_Word {type:'a-mod',word:t[1]['word'],pos:t[0]['tag']})) ''' 

我发现合并创建重复节点后,发现我看到合并匹配确切模式。 所以如果n1-[:rel]->n2存在,新增加的关系n1-[:rel]->n3 将创造另一个新的节点N1

上面我已经解释了我的问题。我怎么能实现它。

+1

这是一个家庭作业/面试问题?另外:你还没有显示任何工作。这不是发布“问题陈述”并让人们为您编写代码的地方。 –

+0

编辑您的问题。不要在评论中发布一个密码块。这是不可读的。 –

+0

@DavidMakogon你现在可以看到它 – aman

回答

3

这将覆盖所有四个百分点的额外点:

如果n1和n2不存在,创建N1和N2,并与边缘加入[:版本]。

MERGE (n1:Label {unique_prop: "unique_value"}) 
MERGE (n2:Label {unique_prop: "unique_value"}) 
MERGE (n1)-[:rel]->(n2);