Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neo4j-避免在cypher中的相同节点之间创建多个关系?_Neo4j_Cypher - Fatal编程技术网

Neo4j-避免在cypher中的相同节点之间创建多个关系?

Neo4j-避免在cypher中的相同节点之间创建多个关系?,neo4j,cypher,Neo4j,Cypher,如果已经在现有节点之间创建了关系,我希望限制正在创建的关系。现在它被多次创建?有没有类似于“merge”的命令来限制重复关系?谢谢你的建议,merge子句也可以避免重复关系。merge子句也可以避免重复关系。嘿,我认为是混淆了,但我需要更多信息。就是合并,合并整个语句。因此,如果他没有找到整个语句的“匹配项”,数据库就会“创建”整个语句 MERGE (Product)-[:listed_under_category]->(level3) MERGE (level3)-[:child_of]

如果已经在现有节点之间创建了关系,我希望限制正在创建的关系。现在它被多次创建?有没有类似于“merge”的命令来限制重复关系?谢谢你的建议,
merge
子句也可以避免重复关系。

merge子句也可以避免重复关系。

嘿,我认为是混淆了,但我需要更多信息。就是合并,合并整个语句。因此,如果他没有找到整个语句的“匹配项”,数据库就会“创建”整个语句

MERGE (Product)-[:listed_under_category]->(level3)
MERGE (level3)-[:child_of]->(level2)
因此,当您键入类似merge(a)-[]->(b)-[]->(q)的内容时 如果您已经有(a)-[]->(b)

他将重新创建(a)-[]->(b)-[]->(q),而您在db(a)-[]->(b)-[]->(q),(a)-[]->(b)中有

但是如果您键入merge(a)-[]->(b)merge(b)-[]->(q)


你知道你有节点。如果没有关系,Neo4j merge将创建关系。如果有关系,就进行匹配

嘿,我想是弄错了,但我需要更多的信息。就是合并,合并整个语句。因此,如果他没有找到整个语句的“匹配项”,数据库就会“创建”整个语句

因此,当您键入类似merge(a)-[]->(b)-[]->(q)的内容时 如果您已经有(a)-[]->(b)

他将重新创建(a)-[]->(b)-[]->(q),而您在db(a)-[]->(b)-[]->(q),(a)-[]->(b)中有

但是如果您键入merge(a)-[]->(b)merge(b)-[]->(q)


你知道你有节点。如果没有关系,Neo4j merge将创建关系。如果存在关系,则匹配用户合并,而不是在创建关系时创建

MERGE (Product)-[:listed_under_category]->(level3)
MERGE (level3)-[:child_of]->(level2)

创建关系时,用户合并而不是创建

MERGE (Product)-[:listed_under_category]->(level3)
MERGE (level3)-[:child_of]->(level2)

如果我理解你的问题,创建独特的可能是你正在寻找的解决方案。例如:

create (a:Ex {name: 'A'})-[r:inside]->(b:Ex {name: 'B'}) return a, b, r
设置您的原始(a)-[]->(b)关系。然后以你提议的方式扩展关系

match (a)-[:inside]->(b) where a.name = 'A' and b.name = 'B'
create unique (a)-[:inside]->(b)-[:inside]->(q:Ex {name: 'Q'})
return a, b, q
如果关系不同,则“创建唯一”也有效:

match (a)-[:inside]->(b) where a.name = 'A' and b.name = 'B'
create unique (a)-[:inside]->(b)-[:under]->(q:Ex {name: 'Q'})
return a, b, q

如果我理解你的问题,创建独特的可能是你正在寻找的解决方案。例如:

create (a:Ex {name: 'A'})-[r:inside]->(b:Ex {name: 'B'}) return a, b, r
设置您的原始(a)-[]->(b)关系。然后以你提议的方式扩展关系

match (a)-[:inside]->(b) where a.name = 'A' and b.name = 'B'
create unique (a)-[:inside]->(b)-[:inside]->(q:Ex {name: 'Q'})
return a, b, q
如果关系不同,则“创建唯一”也有效:

match (a)-[:inside]->(b) where a.name = 'A' and b.name = 'B'
create unique (a)-[:inside]->(b)-[:under]->(q:Ex {name: 'Q'})
return a, b, q