Ответ 1
При использовании MERGE на полных шаблонах поведение заключается в том, что либо весь шаблон совпадает, либо весь шаблон создан. MERGE не будет частично использовать существующие шаблоны - все это или ничего. Если необходимы частичные совпадения, это может быть достигнуто путем разделения шаблона на несколько предложений MERGE. http://docs.neo4j.org/chunked/stable/query-merge.html
MERGE (n)-[:know {r:'123'}]->(test2 {name:'2'})
будет пытаться сопоставить весь шаблон и, поскольку он не существует, он создает его. Что вы можете сделать, это:
MERGE (n {name: '3'}) //Create if a node with name='3' does not exist else match it
MERGE (test2 {name:'2'}) //Create if a node with name='2' does not exist else match it
MERGE (n)-[:know {r:'123'}]->(test2) //Create the relation between these nodes if it does not already exist